web-dev-qa-db-fra.com

Comment inclure une citation dans une chaîne brute Python?

>>> r"what"ever"
SyntaxError: invalid syntax
>>> r"what\"ever"
'what\\"ever'

Alors, comment pouvons-nous obtenir la citation mais pas la barre oblique?

Et s'il vous plaît ne suggère pas r'what"ever' _ car la question devient alors simple: comment inclure les deux types de citations?

lié

76
mpen

Si vous souhaitez utiliser des guillemets doubles dans des chaînes mais pas des guillemets simples, vous pouvez simplement utiliser des guillemets simples comme délimiteur:

r'what"ever'

Si vous avez besoin des deux types de guillemets dans votre chaîne, utilisez une chaîne à trois guillemets:

r"""what"ev'er"""

Si vous souhaitez inclure les deux types de chaînes à triple citation dans votre chaîne (un cas extrêmement improbable), vous ne pouvez pas le faire et vous devez utiliser des chaînes non brutes avec des échappements.

128
Adam Rosenfield

Si vous avez besoin de tout type de guillemets (simples, doubles et triples pour les deux), vous pouvez "combiner" (0) les chaînes:

>>> raw_string_with_quotes = r'double"' r"single'" r'''double triple""" ''' r"""single triple''' """
>>> print raw_string_with_quotes
double"single'double triple""" single triple'''

Vous pouvez également "combiner" (0) des chaînes brutes avec des chaînes non brutes:

>>> r'raw_string\n' 'non-raw string\n'
'raw_string\\nnon-raw string\n'

(0): En fait, l'analyseur Python joint les chaînes et ne crée pas plusieurs chaînes. Si vous ajoutez l'opérateur "+", plusieurs chaînes sont créées et combinées.

9
Bakuriu

Python a plus d’un moyen de faire des chaînes. La syntaxe de chaîne suivante vous permettrait d'utiliser des guillemets doubles:

'''what"ever'''
9
Karl

Peu importe, la réponse est une chaîne brute à trois guillemets:

r"""what"ever"""
3
mpen

Depuis que je suis tombé sur cette réponse et que cela m’a beaucoup aidé, mais j’ai trouvé un problème syntaxique mineur, j’ai pensé que je devais éviter aux autres d’être frustrés. La chaîne à triple guillemet fonctionne pour ce scénario comme décrit, mais notez que si le "vous voulez dans la chaîne se produit à la fin de la chaîne elle-même:

somestr = """This is a string with a special need to have a " in it at the end""""

Vous rencontrerez une erreur lors de l'exécution car les guillemets "" "" (4) dans une ligne confondent le lecteur de chaîne, car il pense qu'il a déjà atteint la fin de la chaîne et trouve ensuite un "aléatoire". Vous pouvez valider cette en insérant un espace dans les 4 guillemets comme suit: "" "" "et il n'y aura pas d'erreur.

Dans ce cas particulier, vous devrez soit utiliser:

somestr = 'This.....at the end"'

ou utilisez la méthode décrite ci-dessus pour construire plusieurs chaînes avec "and" puis les concaténer après coup.

1
charrold303