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


98

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

不是问如何用斜杠将引号转义,这是显而易见的。我要的是一种通用的方式,使所有内容都以字符串文字形式显示,这样我就不必手动检查并转义非常大的字符串的所有内容。有人知道解决方案吗?谢谢!

Answers:



71

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

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

1
这个结构会引入换行符吗?也就是说,变量a将包含带有两个换行符的字符串吗?
MadPhysicist

7
@MadPhysicist:是的,在上述情况下,结果字符串将包含两个换行符。
Greg Hewgill '17

明白了 并且如果在此字符串上使用'split()',默认情况下会按行拆分吗?
MadPhysicist

1
@MadPhysicist .split()的默认设置是按空格分割,而换行符是空白。
Greg Hewgill '17

1
我以前使用过它,并且效果很好。需要注意的两件事:包括其他行上的缩进(空格);如果长字符串碰巧以不正确的方式终止",则因为整个过程最终"""" 都会出现语法错误。
Nagev

9

哪有这回事。看起来您想要在Perl和shell中提供“此处文档”之类的东西,但是Python没有。

仅使用原始字符串或多行字符串意味着不必担心太多事情。如果您使用原始字符串,则仍然必须在终端“ \”周围解决,并且使用任何字符串解决方案,都必须担心如果数据中包含了结束符“,',','或”“” 。

也就是说,无法获取字符串

 '   ''' """  " \

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



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页需要转义字符的代码时。


-1

如果string是变量,请使用。repr方法就可以了:

>>> s = '\tgherkin\n'

>>> s
'\tgherkin\n'

>>> print(s)
    gherkin

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

难道这不是坏风格吗?
shah.shah

什么,嫩黄瓜?
标记

1
您可以改用repr(s)更好的样式
xuiqzy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.