web-dev-qa-db-fra.com

Utilisation de guillemets à l'intérieur de guillemets

Quand je veux faire une commande 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 ferme la chaîne et je ne peux pas mettre le mot dont j'ai besoin entre guillemets.

Comment puis je faire ça?

46
Thi G.

Vous pouvez le faire de trois manières différentes:

1) Utilisez les guillemets simples et doubles ensemble:

>>> print '"A Word that needs quotation marks"'
"A Word that needs quotation marks"

2) Echappez les guillemets dans la chaîne:

>>> print "\"A Word that needs quotation marks\""
"A Word that needs quotation marks" 

3) Utilisez des chaînes à triple citation:

>>> print """ "A Word that needs quotation marks" """
"A Word that needs quotation marks" 
143
Jamie Forrest

Vous devez y échapper:

>>> print "The boy said \"Hello!\" to the girl"
The boy said "Hello!" to the girl
>>> print 'Her name\'s Jenny.'
Her name's Jenny.

Voir la page python pour les littéraux de chaîne .

8
Jonathon Reinhart

Utilisez le caractère d'échappement littéral \

print("Here is, \"a quote\"")

Le caractère signifie fondamentalement ignore le contexte sémantique de mon prochain caractère et le traite dans son sens littéral .

3
Droogans

Python accepte à la fois "et 'comme guillemets, vous pouvez donc le faire comme suit:

>>> print '"A Word that needs quotation marks"'
"A Word that needs quotation marks"

Sinon, il suffit d'échapper au "s" intérieur

>>> print "\"A Word that needs quotation marks\""
"A Word that needs quotation marks"
3
James Polley

en Python 3.2.2 sous Windows,

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

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

1
AnthonyDouSole

Un cas qui prévaut dans les doublons est la nécessité d'utiliser des guillemets pour les processus externes. Une solution de contournement pour cela consiste à ne pas utiliser un shell, ce qui supprime la nécessité d'un niveau de citation.

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

peut être utilement remplacé par

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

(qui corrige également le bogue selon lequel les métacaractères du shell dans filename auraient besoin d'être échappés du shell, ce que le code original n'a pas réussi à faire; mais sans shell, aucun besoin de cela).

Bien sûr, dans la grande majorité des cas, vous ne souhaitez pas 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")
1
tripleee

Lorsque vous avez plusieurs mots de ce type que vous souhaitez concaténer dans une chaîne, je recommande d'utiliser format ou f-strings, ce qui augmente considérablement la lisibilité (à mon avis). 

Pour donner un exemple:

s = "a Word that needs quotation marks"
s2 = "another Word"

Maintenant tu peux faire

print('"{}" and "{}"'.format(s, s2))

qui va imprimer

"a Word that needs quotation marks" and "another Word"

A partir de Python 3.6, vous pouvez utiliser:

print(f'"{s}" and "{s2}"')

donnant le même résultat.

1
Cleb

Vous pouvez aussi essayer l'ajout de chaînes: print " "+'"'+'a Word that needs quotation marks'+'"'

0
whackamadoodle3000