2014-03-31 37 views
1

生成而工作的一些問題串的不同組合, 遵守下列行爲爲什麼允許以下字符串文字?

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' 

我知道其中單引號字符可以在保持與雙引號的條件,和雙引號字符串可以容納單之間的報價。

有人能解釋一下,爲什麼我們正在觀察這種行爲,其中單引號字符串裏面允許兩個同時單引號,但單引號不行。

回答

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" 

這可以用列表打交道時是一種「疑難雜症」,如果你忘了一個逗號:

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

+1。在旁註:各種語言顯示這種行爲。在Python中,你甚至可以混合使用不同的字符串分隔符:''aa''bb''''cc''''解析得很好。 – Hyperboreus

+0

參考:https://docs.python.org/3/reference/lexical_analysis.html#string-literal-concatenation。 – eryksun

相關問題