Comment écrire des littéraux de chaîne en python sans avoir à les échapper?


97

Existe-t-il un moyen de déclarer une variable de chaîne en python de sorte que tout ce qui s'y trouve est automatiquement échappé ou a sa valeur de caractère littérale?

Je ne demande pas comment échapper aux guillemets avec des barres obliques, c'est évident. Ce que je demande, c'est un moyen général de rendre tout ce qui est littéral dans une chaîne afin de ne pas avoir à passer manuellement et à tout échapper pour les très grandes chaînes. Quelqu'un connaît-il une solution? Merci!

Réponses:



69

Si vous avez affaire à de très grandes chaînes, en particulier des chaînes multilignes, tenez compte de la syntaxe des guillemets triples :

a = r"""This is a multiline string
with more than one line
in the source code."""

1
Cette construction introduit-elle des caractères de saut de ligne? Autrement dit, la variable acontiendra une chaîne avec deux caractères de saut de ligne?
MadPhysicist

7
@MadPhysicist: Oui, la chaîne résultante contiendra deux retours à la ligne dans le cas ci-dessus.
Greg Hewgill

Compris. Et si un 'split ()' est utilisé sur cette chaîne, sera-t-il divisé par lignes par défaut?
MadPhysicist

1
@MadPhysicist La valeur par défaut pour .split () est de diviser par des espaces et les retours à la ligne sont des espaces.
Greg Hewgill

1
Je l'ai déjà utilisé et cela fonctionne très bien. Deux choses à savoir: l'indentation (espaces) sur les autres lignes est incluse, ce qui est souhaitable; si la longue chaîne se termine sans "rien de bon, parce que tout se terminera par """" une erreur de syntaxe.
Nagev

9

Il n'y a pas une telle chose. Il semble que vous vouliez quelque chose comme "ici les documents" en Perl et les shells, mais Python ne l'a pas.

L'utilisation de chaînes brutes ou de chaînes multilignes signifie seulement qu'il y a moins de choses à craindre. Si vous utilisez une chaîne brute, vous devez toujours contourner un terminal "\" et avec toute solution de chaîne, vous devrez vous soucier de la fermeture de ", ',' '' ou" "" si elle est incluse dans vos données .

Autrement dit, il n'y a aucun moyen d'avoir la chaîne

 '   ''' """  " \

correctement stocké dans n'importe quelle chaîne littérale Python sans échappement interne d'aucune sorte.



1

(En supposant que vous n'êtes pas obligé de saisir la chaîne directement dans le code Python)

pour contourner le problème signalé par Andrew Dalke, tapez simplement la chaîne littérale dans un fichier texte, puis utilisez ceci;

input_ = '/directory_of_text_file/your_text_file.txt' 
input_open   = open(input_,'r+')
input_string = input_open.read()

print input_string

Cela imprimera le texte littéral de tout ce qui se trouve dans le fichier texte, même si c'est le cas;

 '   ''' """   \

Ce n'est ni amusant ni optimal, mais cela peut être utile, surtout si vous avez 3 pages de code qui auraient nécessité l'échappement de caractères.


-1

si string est une variable, utilisez le. méthode repr dessus:

>>> s = '\tgherkin\n'

>>> s
'\tgherkin\n'

>>> print(s)
    gherkin

>>> print(s.__repr__())
'\tgherkin\n'

N'est-ce pas considéré comme un mauvais style, cependant?
shah.shah

quoi, des cornichons?
markling le

1
vous pouvez utiliser à la repr(s)place pour un meilleur style
xuiqzy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.