为什么引用类型会更改字符串的值? -Python

时间:2018-08-01 14:42:13

标签: python string escaping quotes

In[1] : '\"""'
Out[1]: '"""'

In[2] : "\""""
Out[2]: '"'

在以下示例中(我正在使用python 3),为什么更改用于括起字符串的引号类型会更改字符串的实际值?我希望"\""""=='\"""'是正确的,但这是错误的。为什么第二个示例只返回单引号?谢谢!

4 个答案:

答案 0 :(得分:3)

表达式"\""""是两个字符串文字,"\""""(或'"''',为了清晰起见,切换到单引号),它们连接在一起。 '\"""'的双引号等效为"\"\"\""

>>> ("\""
... ""
... )
'"'
>>> "\"\"\""
'"""'

答案 1 :(得分:1)

In [2]实际上是两个相邻的字符串,类似于"foo""bar"

"\""""包含第一个字符串"\""和第二个字符串""

在评估时,Python将它们串联起来:

In[1]: "foo""bar"
Out[1]: 'foobar'

在您的情况下,由于第二个字符串为空,因此只需获取第一个。

答案 2 :(得分:1)

在字符串连接方面,Python的功能与C相同:

'hello' 'world'  ==  'helloworld'

也就是说,如果您将两个带引号的字符串文字彼此相邻放置,并且中间没有任何内容,则它们将被串联在一起。这就是12之间的区别:

In[2] : "\""""  --> "\"" "" 

因此,您的第二个输入实际上是将字符串"与空字符串连接起来。

答案 3 :(得分:1)

单引号只能以其他单引号结尾

因此'\"不是字符串,然后python等待另一个'完成字符串

所以'\"""'是一个字符串,而"\""""是两个字符串,"\""""

然后结果为""",因为python必须在字符串对象中使用\""",而另一个只是一个带有空字符串的“”。

我希望我的答案很清楚,用所有这些引号都不容易解释