【问题标题】:Why does the type of quote change the value of the string? - Python为什么引号的类型会改变字符串的值? - Python
【发布时间】:2019-01-09 04:40:54
【问题描述】:
In[1] : '\"""'
Out[1]: '"""'

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

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

【问题讨论】:

    标签: python string escaping quotes


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      在你的情况下,由于第二个字符串是空的,你只得到第一个。

      【讨论】:

        【解决方案3】:

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

        'hello' 'world'  ==  'helloworld'
        

        也就是说,如果你把两个带引号的字符串文字放在一起,中间没有任何东西,它们将被连接在一起。这就是12的区别:

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

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

        【讨论】:

          【解决方案4】:

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

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

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

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

          我希望我的回答很清楚,用这些引号来解释并不容易

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-04-17
            • 1970-01-01
            • 2011-08-24
            • 2020-10-31
            • 2019-05-29
            • 2021-11-26
            • 2015-05-28
            • 2021-07-26
            相关资源
            最近更新 更多