如何在原始Python字符串字面量中包含双引号和/或单引号字符?

118 投票
7 回答
281173 浏览
提问于 2025-04-16 09:36

考虑一下:

>>> r"what"ever"
SyntaxError: invalid syntax
>>> r"what\"ever"
'what\\"ever'

那么我们该怎么获取引号,但又不想要斜杠呢?

而且请不要建议使用 r'what"ever',因为那样问题就变成了我们该怎么同时包含两种类型的引号?

相关链接

7 个回答

10

Python处理字符串的方式有很多种。下面这种字符串写法可以让你使用双引号:

'''what"ever'''
15

如果你需要使用任何类型的引号(单引号、双引号,甚至三重引号),你可以把字符串“组合”起来:

>>> raw_string_with_quotes = r'double"' r"single'" r'''double triple""" ''' r"""single triple''' """
>>> print raw_string_with_quotes
double"single'double triple""" single triple'''

你也可以把原始字符串和非原始字符串“组合”在一起:

>>> r'raw_string\n' 'non-raw string\n'
'raw_string\\nnon-raw string\n'

(0): 实际上,Python 解析器会把这些字符串连接起来,而不是创建多个字符串。如果你使用“+”这个符号,那么就会创建多个字符串并把它们组合在一起。

191

如果你想在字符串中使用双引号,但不想用单引号,你可以直接用单引号来包裹字符串:

r'what"ever'

如果你需要在字符串中同时使用两种引号,可以使用三重引号的字符串:

r"""what"ev'er"""

如果你想在字符串中同时包含两种三重引号的字符串(这种情况非常少见),那就不行了,你需要使用带转义字符的非原始字符串。

撰写回答