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

Why does the type of quote change the value of the string? - Python

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

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

在以下示例中(我在其中使用 python 3),为什么更改用于包含字符串的引号类型会更改字符串的实际值?我希望 "\""""=='\"""' 是真的,但它是假的。为什么第二个例子 return 只有一个双引号?谢谢!

表达式 "\"""" 是两个字符串文字,"\""""(或 '"''',为清楚起见切换为单引号),串联在一起。 '\"""' 的双引号等价物是 "\"\"\"".

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

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

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

评估时,Python 将它们连接起来:

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

在你的例子中,因为第二个字符串是空的,你只得到第一个。

Python 在字符串连接方面做一些与 C 相同的事情:

'hello' 'world'  ==  'helloworld'

也就是说,如果您将两个带引号的字符串文字并排放置,中间没有任何内容,它们将连接在一起。这是12的区别:

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

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

单引号只能以另一个单引号结尾,

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

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

然后结果是 """ 因为 python 必须在字符串对象中使用 \""",而另一个只是一个 " 与一个空字符串连接

我希望我的回答是清楚的,用这么多引号解释起来并不容易