it-swarm.com.de

Gibt es einen Unterschied zwischen "string" und "string" in Python?

In PHP wird eine in "doppelte Anführungszeichen" eingeschlossene Zeichenfolge nach zu ersetzenden Variablen analysiert, während eine in "einfache Anführungszeichen" eingeschlossene Zeichenfolge dies nicht tut. Gilt das in Python auch?

60
DavidM

Nein :

2.4.1. String und Bytes Literale

... Im Klartext: Beide Arten von Literalen können in passende einfache Anführungszeichen eingeschlossen werden (') oder doppelte Anführungszeichen ("). Sie können auch in übereinstimmende Gruppen von drei einfachen oder doppelten Anführungszeichen eingeschlossen werden (diese werden im Allgemeinen als Strings mit dreifachen Anführungszeichen bezeichnet). Der Backslash (\) Zeichen wird verwendet, um Zeichen zu maskieren, die ansonsten eine besondere Bedeutung haben, z. B. Zeilenumbruch, Backslash selbst oder das Anführungszeichen ...

113
Milen A. Radev

Python ist eine der wenigen (?) Sprachen, in denen 'und "identische Funktionen haben. Die Wahl hängt normalerweise davon ab, was darin enthalten ist. Wenn ich einen String mit einfachen Anführungszeichen zitiere, verwende ich doppelte Anführungszeichen und umgekehrt, um weniger Zeichen in der Zeichenfolge zu entkommen.

Beispiele:

"this doesn't require escaping the single quote"
'she said "quoting is easy in python"'

Dies ist auf der Seite "String Literals" der python Dokumentation dokumentiert:

37
Bryan Oakley

In einigen anderen Sprachen werden Metazeichen nicht interpretiert, wenn Sie einfache Anführungszeichen verwenden. Nehmen Sie dieses Beispiel in Ruby:

irb(main):001:0> puts "string1\nstring2"
string1
string2
=> nil
irb(main):002:0> puts 'string1\nstring2'
string1\nstring2
=> nil

Wenn Sie möchten, dass die Zeichenfolge in Python wörtlich genommen wird, können Sie unformatierte Zeichenfolgen verwenden (eine Zeichenfolge, der das Zeichen "r" vorangestellt ist):

>>> print 'string1\nstring2'
string1
string2
>>> print r'string1\nstring2'
string1\nstring2
8
Bruno Gomes

Der interaktive Python Interpreter bevorzugt einfache Anführungszeichen:

>>> "text"
'text'

>>> 'text'
'text'

Dies kann für Anfänger verwirrend sein, daher halte ich mich an einfache Anführungszeichen (es sei denn, Sie haben andere Codierungsstandards).

3
user245396

Zeichenfolgen in einfachen und doppelten Anführungszeichen in Python sind identisch. Der einzige Unterschied besteht darin, dass Zeichenfolgen in einfachen Anführungszeichen doppelte Anführungszeichen enthalten können und umgekehrt. Beispiel:

'a "quoted" Word'
"another 'quoted' Word"

Andererseits gibt es Strings mit dreifachen Anführungszeichen, mit denen sowohl Anführungszeichen als auch Zeilenumbrüche getrennt werden können.

Sie können Variablen in einer Zeichenfolge durch benannte Bezeichner und die eingebauten locals () ersetzen:

name = 'John'
lastname = 'Smith'
print 'My name is %(name)s %(lastname)s' % locals()  # prints 'My name is John Smith'
3
efotinis

Der Unterschied zwischen "und 'String-Anführungszeichen ist nur in der Art - außer dass das eine die Notwendigkeit beseitigt, das andere innerhalb des String-Inhalts zu maskieren.

Stil

PEP8 empfiehlt eine konsistente Regel, PEP257 schlägt vor, dass Dokumentzeichenfolgen dreifache doppelte Anführungszeichen verwenden.

In Python sind Zeichenfolgen in einfachen und doppelten Anführungszeichen identisch. Dieses PEP gibt hierfür keine Empfehlung ab. Wähle eine Regel und halte dich daran. Wenn eine Zeichenfolge jedoch einfache oder doppelte Anführungszeichen enthält, verwenden Sie die andere, um umgekehrte Schrägstriche in der Zeichenfolge zu vermeiden. Es verbessert die Lesbarkeit.

Verwenden Sie bei Strings in dreifachen Anführungszeichen immer doppelte Anführungszeichen, um der Docstring-Konvention in PEP 257 zu entsprechen.

Weit verbreitet ist jedoch die Praxis, für Zeichenfolgen in natürlicher Sprache (einschließlich Interpolation) doppelte Anführungszeichen zu bevorzugen - also alles, was möglicherweise für I18N in Frage kommt. Und einfache Anführungszeichen für technische Zeichenfolgen: Symbole, Zeichen, Pfade, Befehlszeilenoptionen, technische REGEX-Anweisungen, ...

(Wenn ich beispielsweise Code für I18N vorbereite, führe ich eine halbautomatische REGEX-Konvertierung von Zeichenfolgen in doppelte Anführungszeichen aus, um beispielsweise gettext zu verwenden.)

3
kxr

Es gibt drei Möglichkeiten, wie Sie Strings in Python routen können: "string" 'string' "" "string string" "" alle führen zu demselben Ergebnis.

0
Vasil

Es gibt keinen Unterschied in Python, und Sie können es wirklich zu Ihrem Vorteil beim Generieren von XML verwenden. Die korrekte XML-Syntax erfordert doppelte Anführungszeichen um Attributwerte. In vielen Sprachen, z. B. Java, müssen Sie diese Anführungszeichen bei der Erstellung einer Zeichenfolge wie der folgenden umgehen:

String HtmlInJava = "<body bgcolor=\"Pink\">"

Aber in Python verwenden Sie einfach das andere Zitat und stellen sicher, dass Sie das passende Endzitat wie folgt verwenden:

html_in_python = '<body bgcolor="Pink">'

Ziemlich schön, oder? Sie können auch drei doppelte Anführungszeichen verwenden, um mehrzeilige Zeichenfolgen zu beginnen und zu beenden. Die EOLs sind wie folgt enthalten:

multiline_python_string = """
This is a multi-line Python string which contains line breaks in the 
resulting string variable, so this string has a '\n' after the Word
'resulting' and the first Word 'Word'."""
0
Steve Moyer