2017-12-29 11 views
2

Ich habe einen Stich, den ich jedes char aus nehmen möchte. Wenn diese Zeichenfolge jedoch einen umgekehrten Schrägstrich enthält, scheint sie ein hexadezimales oder ähnliches zu enthalten. Ich benutze python3.Grab chars wörtlich aus string

def parse(content): 
    tmp = [] 
    for c in content: 
     tmp.append(row[c]) 
    return tmp 

Wenn ich es laufen lasse, erhalte ich die folgende Ausgabe:

>>> parse("abc\x7fa") 
['a', 'b', 'c', '\x7f', 'a'] 

Offensichtlich ist dies nicht das, was ich will. Ich möchte die folgende Ausgabe:

>>> parse("abc\x7fa") 
['a', 'b', 'c', '\', 'x', '7', 'f', 'a'] 

ich auch andere Alternativen ausprobiert haben, wie die Verwendung von

for c in row: 

und:

return [c for c in content] 

aber alle von ihnen bestehen auf '\x7f' in der Ausgabe zu halten .

Antwort

0

Ihre parse Funktion kann durch einen Anruf an list ersetzt werden. Das Problem besteht darin, dass der umgekehrte Schrägstrich nicht maskiert ist. Daher werden der umgekehrte Schrägstrich und die folgenden Zeichen als ein Zeichen interpretiert. Versuchen Sie list(r"abc\x7fa") und werfen Sie einen Blick auf raw strings.

2

\x7f repräsentiert ein Zeichen in Python. in Python, "\" wird für Sonderzeichen usw. verwendet, und \x7f ist das Löschzeichen (Byte 27) die Python-Darstellung von "abc\x7fa" ist "abc\\x7fa".

+0

In der Tat! Man könnte auch ein Raw-String-Literal, r "abc \ x7fa" ', in dem der Backslash nicht interpretiert wird, betrachten. – 9000