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

时间:2011-01-16 02:47:29

标签: python string escaping

有没有办法在python中声明一个字符串变量,以便它内部的所有内容都自动转义,或者有它的文字字符值?

询问如何使用斜杠来转义引号,这是显而易见的。我要求的是一个通用的方法,使字符串文字中的所有内容,以便我不必手动完成并转义非常大的字符串的所有内容。有人知道解决方案吗?谢谢!

6 个答案:

答案 0 :(得分:100)

原始字符串文字:

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

答案 1 :(得分:56)

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

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

答案 2 :(得分:6)

没有这样的事情。看起来你想在Perl和shell中使用类似“here documents”的东西,但是Python没有。

仅使用原始字符串或多行字符串意味着需要担心的事情较少。如果您使用原始字符串,那么您仍然需要解决终端“\”并使用任何字符串解决方案,如果它包含在您的数据中,您将不得不担心结束“,”,“”或“”“

也就是说,没有办法让字符串

 '   ''' """  " \

正确存储在任何Python字符串文字中,无需进行某种内部转义。

答案 3 :(得分:5)

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

如果字符串是变量,请在其上使用。 repr 方法:

>>> s = '\tgherkin\n'

>>> s
'\tgherkin\n'

>>> print(s)
    gherkin

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