Wenn ich einen print
Befehl in Python ausführen möchte und Anführungszeichen verwenden muss, weiß ich nicht, wie ich dies tun soll, ohne die Zeichenfolge zu schließen.
Zum Beispiel:
print " "a word that needs quotation marks" "
Aber wenn ich versuche, das zu tun, was ich oben getan habe, schließe ich die Zeichenfolge und kann das benötigte Wort nicht zwischen Anführungszeichen setzen.
Wie kann ich das machen?
python
string
python-2.7
Thi G.
quelle
quelle
print('\'A word that needs quotation marks\'')
Du musst ihm entkommen. (Verwenden der Python 3-Druckfunktion):
>>> print("The boy said \"Hello!\" to the girl") The boy said "Hello!" to the girl >>> print('Her name\'s Jenny.') Her name's Jenny.
Auf der Python-Seite finden Sie Zeichenfolgenliterale .
quelle
Python akzeptiert sowohl "als auch 'als Anführungszeichen. Sie können dies also folgendermaßen tun:
>>> print '"A word that needs quotation marks"' "A word that needs quotation marks"
Alternativ entkommen Sie einfach den inneren "s
>>> print "\"A word that needs quotation marks\"" "A word that needs quotation marks"
quelle
Verwenden Sie das wörtliche Escape-Zeichen
\
print("Here is, \"a quote\"")
Der Charakter bedeutet im Grunde , den semantischen Kontext meines nächsten Charakters zu ignorieren und ihn im wörtlichen Sinne zu behandeln .
quelle
Ein Fall, der in Duplikaten häufig vorkommt, ist die Anforderung, Anführungszeichen für externe Prozesse zu verwenden. Eine Problemumgehung besteht darin, keine Shell zu verwenden, wodurch die Notwendigkeit einer Angebotsebene entfällt.
os.system("""awk '/foo/ { print "bar" }' %""" % filename)
kann sinnvollerweise durch ersetzt werden
subprocess.call(['awk', '/foo/ { print "bar" }', filename])
(Dies behebt auch den Fehler, in dem sich Metazeichen befinden
filename
müssen, was der ursprüngliche Code nicht konnte. Ohne Shell ist dies jedoch nicht erforderlich.)Natürlich möchten oder brauchen Sie in den allermeisten Fällen überhaupt keinen externen Prozess.
with open(filename) as fh: for line in fh: if 'foo' in line: print("bar")
quelle
Wenn Sie mehrere Wörter wie dieses haben, die Sie in einer Zeichenfolge verketten möchten, empfehle ich die Verwendung
format
oderf-strings
die Lesbarkeit erheblich verbessern (meiner Meinung nach).Um ein Beispiel zu geben:
s = "a word that needs quotation marks" s2 = "another word"
Jetzt können Sie tun
print('"{}" and "{}"'.format(s, s2))
welches drucken wird
"a word that needs quotation marks" and "another word"
Ab Python 3.6 können Sie Folgendes verwenden:
print(f'"{s}" and "{s2}"')
die gleiche Ausgabe ergeben.
quelle
in Python 3.2.2 unter Windows
print(""""A word that needs quotation marks" """)
ist in Ordnung. Ich denke, es ist die Verbesserung des Python-Interpretors.
quelle
Sie können auch versuchen, Zeichenfolgen hinzuzufügen:
print " "+'"'+'a word that needs quotation marks'+'"'
quelle
Ich bin überrascht, dass noch niemand das explizite Conversion-Flag erwähnt hat
>>> print('{!r}'.format('a word that needs quotation marks')) 'a word that needs quotation marks'
Das Flag
!r
ist eine Abkürzung derrepr()
eingebauten Funktion 1 . Es wird verwendet, um die Objektdarstellungobject.__repr__()
anstelle von zu druckenobject.__str__()
.Es gibt jedoch eine interessante Nebenwirkung :
>>> print("{!r} \t {!r} \t {!r} \t {!r}".format("Buzz'", 'Buzz"', "Buzz", 'Buzz')) "Buzz'" 'Buzz"' 'Buzz' 'Buzz'
Beachten Sie, wie unterschiedliche Zusammensetzungen von Anführungszeichen unterschiedlich behandelt werden, damit sie zu einer gültigen Zeichenfolgendarstellung eines Python-Objekts 2 passen .
1 Korrigieren Sie mich, wenn jemand etwas anderes weiß.
2 Das ursprüngliche Beispiel der Frage
" "word" "
ist keine gültige Darstellung in Pythonquelle
Dies hat bei mir in IDLE Python 3.8.2 funktioniert
print('''"A word with quotation marks"''')
Dreifache einfache Anführungszeichen scheinen es Ihnen zu ermöglichen, Ihre doppelten Anführungszeichen als Teil der Zeichenfolge einzuschließen.
quelle