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

kja*_*keb 85 python string escaping

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

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

Sil*_*ost 109

原始字符串文字:

>>> r'abc\dev\t'
'abc\\dev\\t'
Run Code Online (Sandbox Code Playgroud)

  • 请注意,原始字符串文字[不能以反斜杠结尾(实际上是奇数个反斜杠)](/sf/ask/45343861/)并且[只能包含引号字符,如果它前面是反斜杠,将按字面意思包含](/sf/ask/324132581/)。 (2认同)

Gre*_*ill 61

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

a = r"""This is a multiline string
with more than one line
in the source code."""
Run Code Online (Sandbox Code Playgroud)

  • @MadPhysicist:是的,在上面的例子中,结果字符串将包含两个换行符. (7认同)
  • @MadPhysicist .split() 的默认值是按空格分割,换行符是空格。 (2认同)

And*_*lke 8

哪有这回事.看起来你想在Perl和shell中使用类似"here documents"的东西,但Python没有.

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

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

 '   ''' """  " \
Run Code Online (Sandbox Code Playgroud)

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


ʇsә*_*ɹoɈ 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
Run Code Online (Sandbox Code Playgroud)