2017-04-27 23 views
2

は、私がここに簡単な質問を持っている:他の言葉でエスケープ文字がPythonの x0のような文字列に変換されるのはなぜですか?

['\x00', 1, 2, 3] 

、なぜ、どのようにエスケープ文字\\x0になりつつある。

mylist=[1,2,3] 
mylist.insert(0, '\0') 
print(mylist) 

たち与えますか?
ここに目的はありますか?これはエンコードのものですか?

なぜPythonはある表現を別の表現に戻しますか?

+4

'\ 0 'と' \のx00'は同じことのちょうど2つの異なる表現したものです。 –

+0

'表現'は人間が読めるプリントアウトを意味しますか?または、他の何か?なぜ、同じことについて2つの異なる表現が存在するのでしょうか? DRYはプログラミングとデザインのあらゆるレベルで基本的な会合ではありませんか? –

+0

DRYはまったく無関係です。そして、いつも人間の多くは、人間が読むことができるかどうかを表現します。あなたのケースでは、ちょうど0の8進表現と16進表現を持っています。 –

答えて

2

したがって\<various single characters>は特別な意味を持ち、\xYYは16進値YYの文字です。以下の(およびその他)は等価です:

>>> assert '\0' == '\x00' # null 
>>> assert '\t' == '\x09' # tab 
>>> assert '\r' == '\x0d' # carriage return 
>>> assert '\n' == '\x0a' # line feed 

これは、タブは9としてエンコードされているため、あるなど、一般的に、Pythonは、あなたの文字の16進値であり、最も一般的な表現を、表示されますキャラクターそのものを見ることができない場合。ゼロバイト:

String Literal Docs

関連する問題