Как писать строковые литералы в Python, не покидая их?

Есть ли способ объявить строковую переменную в Python таким образом, что все внутри нее автоматически экранируется или имеет буквальное символьное значение?

Я не спрашиваю, как избежать кавычек с косой чертой, это очевидно. То, о чем я прошу, - это универсальный способ сделать все в строковом литерале таким образом, чтобы мне не пришлось вручную проходить и экранировать все для очень больших строк. Кто-нибудь знает решение? Спасибо!

5 ответов

Решение

Необработанные строковые литералы:

>>> r'abc\dev\t'
'abc\\dev\\t'

Если вы имеете дело с очень большими строками, в частности с многострочными строками, учтите синтаксис тройных кавычек:

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

Там нет такой вещи. Похоже, вы хотите что-то вроде "здесь документы" в Perl и оболочках, но в Python этого нет.

Использование только необработанных или многострочных строк означает, что вам нужно меньше беспокоиться. Если вы используете необработанную строку, вам все равно придется работать с терминалом "\", и с любым строковым решением вам придется беспокоиться о закрытии ", ',' '' или" "", если он включен в ваши данные,

То есть нет способа получить строку

 '   ''' """  " \

правильно хранится в любом строковом литерале Python без какого-либо внутреннего экранирования.

Вы найдете документацию по строковым литералам Python здесь:

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

и здесь:

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

Простейшим примером будет использование префикса 'r':

ss = r'Hello\nWorld'
print(ss)
Hello\nWorld

(Если вы не обязаны вводить строку непосредственно из кода Python)

Чтобы обойти проблему, на которую указал Эндрю Далке, просто введите буквенную строку в текстовый файл и затем используйте это;

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

print input_string

Это напечатает буквальный текст того, что находится в текстовом файле, даже если это так;

 '   ''' """  “ \

Не весело и не оптимально, но может быть полезно, особенно если у вас есть 3 страницы кода, для которых требуется экранирование символов.

Если строка является переменной, используйте. методrepr на нем:

>>> s = '\tgherkin\n'

>>> s
'\tgherkin\n'

>>> print(s)
    gherkin

>>> print(s.__repr__())
'\tgherkin\n'
Другие вопросы по тегам