为什么允许以下字符串文字?

时间:2014-03-31 17:56:18

标签: python string python-2.7 python-3.x

在处理某些问题时生成不同的字符串组合, 遵守以下行为

In [3]: str = 'abcd'

In [4]: str
Out[4]: 'abcd'

In [5]: str = 'ab'cd'
------------------------------------------------------------
   File "<ipython console>", line 1
     str = 'ab'cd'
              ^
SyntaxError: invalid syntax


In [6]: str = 'ab''cd'

In [7]: str
Out[7]: 'abcd'

我知道单引号字符串中间可以包含双引号的情况,而双引号字符串可以保存单引号。

有人可以解释一下,为什么我们观察这种行为,里面单引号字符串允许两个同时单引号,但单引号不行。

1 个答案:

答案 0 :(得分:8)

Python隐式连接附近的字符串,它们之间没有任何内容。观察:

>>> 'hel'  'lo'
'hello'
>>> 'cat'        'egory'
'category'
>>> 'ab''cd'
'abcd'

具有奇数个引号的字符串是不明确的,因此不允许。

>>> 'ab'cd'   # Here `cd` is a bareword and ' starts an unterminated string
  File "<stdin>", line 1
    'ab'cd'
         ^
SyntaxError: invalid syntax
>>> 'ab\'cd'  # The middle single quote is escaped so this is OK
"ab'cd"

这可能是一种&#34;陷阱&#34;当你忘记逗号时处理列表:

>>> ['a', 'b', 'c' 'd', 'e']  # no comma between 'c' and 'd'
['a', 'b', 'cd', 'e']