79 votes

Utilisation de guillemets à l'intérieur de guillemets

Quand je veux faire un print en Python et que je dois utiliser des guillemets, je ne sais pas comment le faire sans fermer la chaîne.

Par exemple :

print " "a word that needs quotation marks" "

Mais lorsque j'essaie de faire ce que j'ai fait ci-dessus, je finis par fermer la chaîne et je ne peux pas mettre le mot dont j'ai besoin entre guillemets.

Comment puis-je faire ça ?

1voto

tripleee Points 28746

L'obligation d'utiliser des devis pour les processus externes est un cas qui se retrouve fréquemment dans les doublons. Une solution de contournement consiste à ne pas utiliser de shell, ce qui supprime l'exigence d'un niveau de cotation.

os.system("""awk '/foo/ { print "bar" }' %""" % filename)

peut être utilement remplacé par

subprocess.call(['awk', '/foo/ { print "bar" }', filename])

(qui corrige également le bogue qui fait que les métacaractères de l'interpréteur de commandes dans filename devrait être échappé du shell, ce que le code original n'a pas réussi à faire ; mais sans shell, ce n'est pas nécessaire).

Bien sûr, dans la grande majorité des cas, vous ne voulez ou n'avez pas du tout besoin d'un processus externe.

with open(filename) as fh:
    for line in fh:
        if 'foo' in line:
            print("bar")

0voto

AnthonyDouSole Points 9

Dans Python 3.2.2 sous Windows,

print(""""A word that needs quotation marks" """) 

c'est bon. Je pense que c'est l'amélioration de l'interpréteur Python.

0voto

Vous pouvez également essayer l'addition de chaînes : print " "+'"'+'a word that needs quotation marks'+'"'

0voto

Leonardus Chen Points 706

Je suis surpris que personne n'ait mentionné drapeau de conversion explicite mais

>>> print('{!r}'.format('a word that needs quotation marks'))
'a word that needs quotation marks'

Le drapeau !r est une abréviation de l'expression repr() fonction intégrée 1 . Il est utilisé pour imprimer la représentation de l'objet object.__repr__() au lieu de object.__str__() .

Il y a une intéressante effet secondaire cependant :

>>> print("{!r} \t {!r} \t {!r} \t {!r}".format("Buzz'", 'Buzz"', "Buzz", 'Buzz'))
"Buzz'"      'Buzz"'     'Buzz'      'Buzz'

Remarquez comment les différentes compositions de guillemets sont traitées différemment afin de correspondre à une représentation de chaîne valide d'un objet Python. 2 .


1 Corrigez-moi si quelqu'un sait le contraire.

2 L'exemple original de la question " "word" " n'est pas une représentation valide en Python

0voto

dalhax Points 1

Ceci a fonctionné pour moi dans IDLE Python 3.8.2

print('''"A word with quotation marks"''')

Les guillemets simples triples semblent vous permettre d'inclure vos guillemets doubles dans la chaîne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X