如何在 python 中编写字符串而不必转义它们?

有没有一种方法可以在 python 中声明一个字符串变量,使其中的所有内容都被自动转义,或者具有其文字字符值?

我是 没有询问如何用斜杠转义引号,这是显而易见的。我所要求的是一种通用的方法,将所有内容都写成字符串,这样我就不必手动遍历和转义非常大的字符串中的所有内容。有人知道怎么解决吗?谢谢!

149693 次浏览

原始字符串:

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

如果您正在处理非常大的字符串,特别是多行字符串,请注意 三倍报价语法:

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

您可以在这里找到 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

根本没有这回事。看起来您希望在 Perl 和 shell 中使用类似于“ here document”的内容,但 Python 没有这样的内容。

使用原始字符串或多行字符串只意味着需要担心的事情更少。如果您使用原始字符串,那么您仍然需要处理终端“”,并且对于任何字符串解决方案,如果它包含在您的数据中,那么您将不得不担心关闭“”、“”或“”。

也就是说,不可能有绳子

 '   ''' """  " \

正确地存储在任何 Python 字符串文本中,而不进行某种内部转义。

(假设您不需要直接从 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页代码,需要字符转义。

使用打印和报告:

>>> s = '\tgherkin\n'


>>> s
'\tgherkin\n'


>>> print(s)
gherkin


>>> repr(s)
"'\\tgherkin\\n'"


# print(repr(..)) gets literal


>>> print(repr(s))
'\tgherkin\n'


>>> repr('\tgherkin\n')
"'\\tgherkin\\n'"


>>> print('\tgherkin\n')
gherkin


>>> print(repr('\tgherkin\n'))
'\tgherkin\n'