Python 引号中的引号
在Python 3.x中:Python 引号中的引号,python,string,python-3.x,double-quotes,Python,String,Python 3.x,Double Quotes,在Python 3.x中: print(""s"") # SyntaxError print("""s""") # prints s print(""""s"""") # SyntaxError print("""""s""""") # prints ""s 当字符串中有不同数量的双引号时,这种不同行为背后的原因是什么?在Python中,您可以使用“…”创建多行字符串。引用 字符串文字可以跨越多行。一种方法是使用三重引号:“…”或“…”
print(""s"") # SyntaxError
print("""s""") # prints s
print(""""s"""") # SyntaxError
print("""""s""""") # prints ""s
当字符串中有不同数量的双引号时,这种不同行为背后的原因是什么?在Python中,您可以使用
“…”创建多行字符串。引用
字符串文字可以跨越多行。一种方法是使用三重引号:“…”
或“…”
在第一种情况下,“s”
的解析如下
print ("a" "b")
# ab
“”(空字符串文字)s“”(空字符串文字)
现在,Python不知道如何处理s
。这就是为什么它在SyntaxError
中失败的原因
在第三种情况下,字符串解析如下
print ("a" "b")
# ab
“s”(多行字符串的结尾)``
现在最后一个“
没有匹配的”
。这就是它失败的原因
在最后一种情况下,“s”
的解析如下
print ("a" "b")
# ab
“s”
因此,多行字符串被成功解析,然后它旁边有一个空字符串文本。在Python中,您可以通过将两个字符串文本相邻写入来连接它们,如下所示
print ("a" "b")
# ab
因此,最后一个空字符串文字与“s
连接。从C继承的字符串文字连接规则负责这一点。考虑这一点:
x = "a" "b"
根据Python语法,这两个字符串被合并为一个字符串
另一方面,还存在三重引号字符串(用于多行字符串,如doc字符串),这使问题更加复杂。在这里,开始的三重引号与下一个三重引号匹配
现在,考虑你的情况是轻的,并分组每个双引号或三引号。你会发现,在一种情况下,中间有一个令牌<代码> s>代码>,有时代码> S/<代码>是字符串的一部分,有时在结尾有剩余的引号等。
< P>有两件事需要了解:
除了常规字符串之外,“foo”
Python还有多行字符串,它们用三个引号打开和关闭“foo”
(请参阅);及
“foo”“bar”==“foobar”
(请参阅)李>
至于你的四个例子:
""s""
在出现s
之前关闭单引号,因此相当于:
x = ""
x s x
这显然毫无意义
"""s"""
是一个多行字符串,其中包含一个字符
""""s""""
是一个多行字符串,包含两个字符(“s
),后跟一个不匹配的引号
"""""s"""""
是一个多行字符串,包含三个字符(“s
)并连接到空字符串文字