如何在原始Python字符串中包含引号?

时间:2011-01-07 21:27:31

标签: python syntax

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

那么我们如何得到报价而不是斜线?

请不要建议r'what"ever'因为那时问题就变成了我们如何包含两种类型的引用?

related

8 个答案:

答案 0 :(得分:122)

如果要在字符串中使用双引号而不是单引号,则可以使用单引号作为分隔符:

r'what"ever'

如果您的字符串中需要两种引号,请使用三引号字符串:

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

如果你想在你的字符串中包含两种三引号字符串(极不可能的情况),你就不能这样做,而且你必须使用带有转义的非原始字符串。

答案 1 :(得分:9)

Python有多种方法可以执行字符串,以下字符串语法允许您使用双引号:

'''what"ever'''

答案 2 :(得分:9)

如果你需要任何类型的引用(两者都是单引号,双引号和三引号),你可以“组合”(0)字符串:

>>> 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'''

您也可以将(0)原始字符串与非原始字符串“组合”:

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

(0):实际上python解析器连接字符串,它不会创建多个字符串。如果添加“+”运算符,则会创建并组合多个字符串。

答案 3 :(得分:3)

没关系,答案是原始的三重引用字符串:

r"""what"ever"""

答案 4 :(得分:1)

因为我偶然发现了这个答案,这对我有很大帮助,但我发现了一个轻微的句法问题,我觉得我应该拯救别人可能的挫折感。三重引用的字符串适用于此描述的场景,但请注意,如果"你想要的字符串出现在字符串本身的末尾:

somestr = """This is a string with a special need to have a " in it at the end""""

您将在执行时遇到错误,因为"""" (4)连续引号会混淆字符串阅读器,因为它认为它已经到达字符串的末尾然后找到一个随机的"在那里。你可以通过在4个引号中插入一个空格来验证这一点:" """它不会有错误。

在这种特殊情况下,您需要使用:

somestr = 'This.....at the end"'

或使用上面描述的用混合"构建多个字符串的方法。和'然后在事实之后将它们连接起来。

答案 5 :(得分:0)

仅包含新的Python f String兼容功能:

var_a = 10

f"""This is my quoted variable: "{var_a}". """

答案 6 :(得分:-1)

如果要将字符串变量括在引号内,则可以这样做

“ \”“ +字符串变量+” \“”

答案 7 :(得分:-3)

dqote='"'
sqote="'"

使用'+'运算符以及dqotesquote变量来获取所需内容

如果我想要sed -e s/",u'"/",'"/g -e s/^"u'"/"'"/,您可以尝试以下

dqote='"'
sqote="'"
cmd1="sed -e s/"+dqote+",u'"+dqote+"/"+dqote+",'"+dqote+'/g -e s/^"u'+sqote+dqote+'/'+dqote+sqote+dqote+'/'