2016-08-06 6 views
1

私は最近Pythonを学び始めました。あなたが私に迷惑をかけている質問で私を助けてくれることを願っています。私はLearn Python The Hard WayでPythonオンラインを学んでいます。演習6では、文字列の書式設定操作である%rを使用しているときに問題が発生し、2つの異なる文字列が表示されていました。 1つの文字列を印刷すると、一重引用符(' ')の文字列が得られます。別のもので私は二重引用符(" ")を得ていました。ここ これら2つの文字列の違いは?

コードである:

x = "There are %d types of people." % 10 
binary = "binary" 
do_not = "don't" 
y = "Those who know %s and those who %s." % (binary, do_not) 

print "I said: %r." % x 
print "I also said: %r." % y 

最初の印刷ステートメントの結果:

I said: 'There are 10 types of people.'.

第二の印刷ステートメントの結果:

I also said: "Those who know binary and those who don't.".

したい 文の1つにシングルクォート(' ')、もう1つに(" ")の結果が含まれている理由を理解してください。 ] P.S.私はPython 2.7を使用しています。

答えて

1

%rは、文字列のreprバージョンになっている:あなたが見

>>> x = 'here' 
>>> print repr(x) 
'here' 

を、単一引用符は、通常使用されているものです。しかし、yの場合、文字列の中に一重引用符(アポストロフィ)があります。さて、オブジェクトのreprは、コードとして評価することが元のオブジェクトと同じになるようにしばしば定義されます。 Pythonが一重引用符を使用すると、エラーが発生します:

>>> x = 'those who don't' 
    File "<stdin>", line 1 
    x = 'those who don't' 
       ^
SyntaxError: invalid syntax 

したがって、代わりに二重引用符を使用します。

1

この行に注目してください - >do_not = "don't"。この文字列には一重引用符があります。つまり、一重引用符をエスケープする必要があります。そうでない場合通訳者はどこの文字列がどこから始まったのかを知りますです。 Pythonはこの文字列リテラルを表すのに""を使うことを知っています。

do_not = "dont"

>>> I also said: 'Those who know binary and those who dont.'.

Single vs. double quotes in python.

:我々は 'を削除した場合

は、その後、我々は、文字列を囲む単一引用符を期待することができます

関連する問題