2017-12-29 45 views
2

私は各文字を取りたい刺しがあります。しかし、この文字列にバックスラッシュが含まれている場合は、16進数などを取得しているようです。私はpython3を使用しています。これは私が欲しいものではありません、明らかに文字列から文字列をつかむ

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

:私はそれを実行すると

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

は、私は次の出力を取得します。

return [c for c in content] 

しかし、それらのすべてが出力に'\x7f'を維持を主張:私はまた、このような

for c in row: 

とを使用するなど、他の選択肢を、試してみました

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

:私は、次のような出力をしたいです。

答えて

0

parseの機能は、listの呼び出しで置き換えることができます。問題は、バックスラッシュはエスケープされないため、バックスラッシュとそれに続く文字は1文字として解釈されます。 list(r"abc\x7fa")を試してみてraw stringsをご覧ください。

2

\x7fは、Pythonで1文字を表します。 、特殊文字には"\"が使用され、\x7fは削除文字(バイト27) 、"abc\x7fa"の数字は"abc\\x7fa"です。

+0

実際に!また、生の文字列リテラル 'r" abc \ x7fa "'も考えられます。ここではバックスラッシュは解釈されません。 – 9000

関連する問題