引号内的报价

San*_*a S 2 python string python-3.x double-quotes

在Python 3.x中:

    print(""s"")       # SyntaxError
    print("""s""")     # prints s
    print(""""s"""")   # SyntaxError
    print("""""s""""") # prints ""s
Run Code Online (Sandbox Code Playgroud)

当字符串中有不同数量的双引号时,这种不同行为背后的原因是什么?

the*_*eye 6

在Python中,您可以创建多行字符串"""...""".引用字符串的文档,

字符串文字可以跨越多行.一种方法是使用三引号:"""..."""或'''...'''.

在你的第一种情况下,""s""解析是这样的

"" (empty string literal)  s  "" (empty string literal)
Run Code Online (Sandbox Code Playgroud)

现在,Python不知道该怎么做s.这就是它失败的原因SyntaxError.

在第三种情况下,字符串将被解析为这样

"""  "s  """ (End of multiline string)  `"`
Run Code Online (Sandbox Code Playgroud)

现在最后一个"没有匹配".这就是失败的原因.

在最后一种情况下,"""""s"""""解析如下

"""  ""s  """  ""
Run Code Online (Sandbox Code Playgroud)

因此,多线字符串被成功解析,然后您旁边有一个空字符串文字.在Python中,您可以通过将它们彼此相邻地连接起来来连接两个字符串文字,就像这样

print ("a" "b")
# ab
Run Code Online (Sandbox Code Playgroud)

所以,最后一个空字符串文字与""s.