Подтвердить что ты не робот

Как написать строковые литералы в python, не избегая их?

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

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

4b9b3361

Ответ 1

Строковые литералы:

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

Ответ 2

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

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

Ответ 3

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

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

То есть, нет способа иметь строку

 '   ''' """  " \

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

Ответ 5

(Предполагая, что вам не требуется вводить строку непосредственно из кода Python)

чтобы обойти проблему Andrew Dalke, просто введите буквальную строку в текстовый файл, а затем используйте это:

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

print input_string

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

 '   ''' """  " \

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

Ответ 6

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

>>> s = '\tgherkin\n'

>>> s
'\tgherkin\n'

>>> print(s)
    gherkin

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