web-dev-qa-db-fra.com

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

Existe-t-il un moyen de déclarer une variable chaîne dans python) de sorte que tout ce qui se trouve à l'intérieur de celle-ci est automatiquement échappé ou a sa valeur de caractère littéral?

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érique de tout créer dans un littéral de chaîne afin que je n’aie pas à passer manuellement et à tout échapper pour les très grandes chaînes. Quelqu'un sait d'une solution? Merci!

84
kjakeb

Littéraux de chaîne bruts:

>>> r'abc\dev\t'
'abc\\dev\\t'
106
SilentGhost

Si vous traitez de très grandes chaînes, en particulier des chaînes multilignes, tenez compte de la syntaxe triple-quote:

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

Il n'y a pas une telle chose. On dirait que vous voulez quelque chose comme "ici des documents" dans Perl et les shells, mais Python n'a pas cela.

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 vous devez 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 tout Python littéral de chaîne sans échappement interne quelconque).

7
Andrew Dalke

Vous trouverez la documentation littérale sur les chaînes de Python ici:

http://docs.python.org/tutorial/introduction.html#strings

et ici:

http://docs.python.org/reference/lexical_analysis.html#literals

L’exemple le plus simple consisterait à utiliser le préfixe 'r':

ss = r'Hello\nWorld'
print(ss)
Hello\nWorld
5
ʇsәɹoɈ

(En supposant que vous ne soyez pas obligé d'entrer la chaîne directement dans Python))

andrew Dalke a souligné, il suffit de taper la chaîne littérale dans un fichier texte, puis l’utiliser;

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

print input_string

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

 '   ''' """  “ \

Pas amusant ou optimal, mais peut être utile, surtout si vous avez 3 pages de code qui auraient nécessité une échappement de caractères.

1
Jeff Hykin

si chaîne est une variable, utilisez la méthode .repr:

>>> s = '\tgherkin\n'

>>> s
'\tgherkin\n'

>>> print(s)
    gherkin

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