2016-08-08 105 views

Antwort

2

weil in erster die gesamte Zeichenkette in einem Zitat ist so eine andere Anführungszeichen sollten maskiert werden. Während in der zweiten die ganze Saite im doppelten Zitat steht.

>>> '\"atg is a codon, isn\'t it?\" \"Yes, it is\", he answered' 
'"atg is a codon, isn\'t it?" "Yes, it is", he answered' 
^             ^
>>> 
>>> 'This is a codon, isn\'t it?' 
"This is a codon, isn't it?" # there is no need to escape the one-quote between double-quotes   
^      ^
+0

Sorry, ich verstehe es nicht: beide Zeichenfolgen sind in einfache Anführungszeichen eingeschlossen. Wenn ich das Zitat zwischen den Anführungszeichen nicht verberge, bekomme ich einen Syntaxfehler. – oaklander114

+0

@ oaklander114 Ja, aber Python ändert sie für eine bessere Darstellung. Es geht darum, ansonsten gibt es keinen Unterschied zwischen diesen Anführungszeichen für die Kapselung der Strings. – Kasramvd

+0

Ich sehe, also gibt es keine Möglichkeit, dies neben der Verwendung der Druckfunktion zu vermeiden? – oaklander114

0

Das Escape-Zeichen wird benötigt, da dies die Zeichenkette ist, die, wenn sie genau eingegeben wird, die Zeichenkette reproduzieren würde. Die Zeichenfolge enthält sowohl einfache als auch doppelte Anführungszeichen. Daher muss der Typ, der die Zeichenfolge einschließt, innerhalb der Zeichenfolge mit Escapezeichen versehen werden.

0

Sie können entweder einfache Anführungszeichen oder doppelte Anführungszeichen verwenden, um eine Zeichenfolge zu umschließen. Jedes Vorkommen Ihres umschließenden Anführungszeichens muss mit einem '\' versehen werden.

>>> b = 'Hello\'s' 
>>> a = "Hello's" 
>>> b = 'Hello\'s' 
>>> c = 'Hello"s' 
>>> d = "Hello\"s" 
>>> a 
"Hello's" 
>>> b 
"Hello's" 
>>> c 
'Hello"s' 
>>> d 
'Hello"s' 
>>> 
+0

Das seltsame (zumindest für mich) Verhalten tritt auf, wenn Sie beide Arten von Anführungszeichen innerhalb der Zeichenfolge verwenden. Zum Beispiel 'e =" \ "Hallo \ 's". In diesem Fall wird der escaping Backslash in der Ausgabe angezeigt. – oaklander114

+0

Das ist seltsam. Am Anfang war es, weil der String doppelt zitiert ist, aber wenn Sie '' 'f =" Hallo \ 's "' '' Sie erwartet Verhalten, frage ich mich, ob es ein Bug ist. – WombatPM

+0

Es ist nur ein Anzeigeproblem in der REPL-Shell. Die Länge der Zeichenfolge ist korrekt, genau wie die Position der Zeichen. – WombatPM