【发布时间】:2019-01-09 04:40:54
【问题描述】:
In[1] : '\"""'
Out[1]: '"""'
In[2] : "\""""
Out[2]: '"'
在以下示例中(我使用的是 python 3),为什么更改用于括起字符串的引号类型会更改字符串的实际值?我希望"\""""=='\"""' 是真的,但它是假的。为什么第二个例子只返回一个双引号?谢谢!
【问题讨论】:
标签: python string escaping quotes
In[1] : '\"""'
Out[1]: '"""'
In[2] : "\""""
Out[2]: '"'
在以下示例中(我使用的是 python 3),为什么更改用于括起字符串的引号类型会更改字符串的实际值?我希望"\""""=='\"""' 是真的,但它是假的。为什么第二个例子只返回一个双引号?谢谢!
【问题讨论】:
标签: python string escaping quotes
表达式"\"""" 是两个字符串文字,"\"" 和""(或'"' 和'',为了清楚起见切换到单引号),连接在一起。 '\"""' 的双引号等价物将是 "\"\"\""。
>>> ("\""
... ""
... )
'"'
>>> "\"\"\""
'"""'
【讨论】:
In[2]其实是两个相邻的字符串,类似于"foo""bar"。
"\"""" 包含第一个字符串 "\"" 和第二个字符串 ""。
在评估时,Python 将它们连接起来:
In[1]: "foo""bar"
Out[1]: 'foobar'
在你的情况下,由于第二个字符串是空的,你只得到第一个。
【讨论】:
在字符串连接方面,Python 的做法与 C 相同:
'hello' 'world' == 'helloworld'
也就是说,如果你把两个带引号的字符串文字放在一起,中间没有任何东西,它们将被连接在一起。这就是1和2的区别:
In[2] : "\"""" --> "\"" ""
所以您的第二个输入实际上是将字符串" 与一个空字符串连接起来。
【讨论】:
单引号只能以另一个单引号结尾,
因此'\" 不是字符串,python 然后等待另一个' 完成字符串
所以'\"""'是一个字符串,"\""""是两个字符串,"\""和""
然后结果是""",因为python必须在字符串对象中取\""",而另一个只是一个“连接一个空字符串
我希望我的回答很清楚,用这些引号来解释并不容易
【讨论】: