Como escrever literais de string em python sem ter que escapar deles?


97

Existe uma maneira de declarar uma variável de string em python de forma que tudo dentro dela seja automaticamente escapado ou tenha seu valor de caractere literal?

Estou não perguntar como escapar das aspas com barras, isso é óbvio. O que estou pedindo é uma maneira de uso geral para tornar literal tudo em uma string, para que eu não precise percorrer manualmente e escapar de tudo para strings muito grandes. Alguém conhece uma solução? Obrigado!

Respostas:



69

Se você estiver lidando com strings muito grandes, especificamente strings de várias linhas, esteja ciente da sintaxe de aspas triplas :

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

1
Esta construção introduz caracteres de quebra de linha? Ou seja, a variável aconterá uma string com dois caracteres de quebra de linha?
MadPhysicist

7
@MadPhysicist: Sim, a string resultante conterá duas novas linhas no caso acima.
Greg Hewgill

Entendido. E se um 'split ()' for usado nesta string, ele será dividido por linhas por padrão?
MadPhysicist

1
@MadPhysicist O padrão para .split () é dividir por espaços em branco e as novas linhas são espaços em branco.
Greg Hewgill

1
Já usei isso antes e funciona bem. Duas coisas a serem observadas: recuo (espaços) nas outras linhas estão incluídos, o que é desejável; se a string longa terminar "sem bom, porque a coisa toda vai acabar com o """" que é um erro de sintaxe.
Nagev

9

Não existe tal coisa. Parece que você quer algo como "documentos aqui" em Perl e os shells, mas Python não tem isso.

Usar strings brutas ou strings multilinhas significa apenas que há menos coisas com que se preocupar. Se você usar uma string bruta, então você ainda terá que trabalhar em um terminal "\" e com qualquer solução de string você terá que se preocupar com o fechamento ", ',' '' ou" "" se estiver incluído em seus dados .

Ou seja, não há como ter a corda

 '   ''' """  " \

armazenado adequadamente em qualquer literal de string Python sem escape interno de algum tipo.



1

(Supondo que você não seja obrigado a inserir a string diretamente no código Python)

para contornar o problema apontado por Andrew Dalke, basta digitar a string literal em um arquivo de texto e usá-la;

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

print input_string

Isso imprimirá o texto literal de tudo o que estiver no arquivo de texto, mesmo que esteja;

 '   ''' """   \

Não é divertido ou ideal, mas pode ser útil, especialmente se você tiver 3 páginas de código que precisariam de escape de caractere.


-1

se string for uma variável, use o. método repr nele:

>>> s = '\tgherkin\n'

>>> s
'\tgherkin\n'

>>> print(s)
    gherkin

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

Mas isso não é considerado um estilo ruim?
shah.shah

o que, pepininhos?
markling em

1
você pode usar em repr(s)vez disso para um estilo melhor
xuiqzy
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.