Ответ 1
Строковые литералы:
>>> r'abc\dev\t'
'abc\\dev\\t'
Есть ли способ объявить строчную переменную в python, так что все внутри нее автоматически экранируется или имеет буквенное значение символа?
Я не спрашиваю, как избежать котировок с косой чертой, что очевидно. То, о чем я прошу, является универсальным способом сделать все в строковом литерале, чтобы мне не пришлось вручную проходить и избегать всего для очень больших строк. Кто-нибудь знает о решении? Спасибо!
Строковые литералы:
>>> 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#strings
и здесь:
http://docs.python.org/reference/lexical_analysis.html#literals
Самый простой пример - использовать префикс 'r':
ss = r'Hello\nWorld'
print(ss)
Hello\nWorld
(Предполагая, что вам не требуется вводить строку непосредственно из кода 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 страницы кода, которые потребовали бы экранирования символов.
если строка является переменной, используйте. метод repr на нем:
>>> s = '\tgherkin\n'
>>> s
'\tgherkin\n'
>>> print(s)
gherkin
>>> print(s.__repr__())
'\tgherkin\n'