我曾嘗試在Python的交互式控制檯執行以下操作:多行字符串字面解析
>>> """"string"""
'"string'
>>> """"string""""
SyntaxError: EOL while scanning string literal
我想到後一種情況下""""string""""
返回'"string"'
因爲我在開頭有三個報價,並在年底起行情。 Python如何解釋它?
我曾嘗試在Python的交互式控制檯執行以下操作:多行字符串字面解析
>>> """"string"""
'"string'
>>> """"string""""
SyntaxError: EOL while scanning string literal
我想到後一種情況下""""string""""
返回'"string"'
因爲我在開頭有三個報價,並在年底起行情。 Python如何解釋它?
它看到了三引號的字符串""""string"""
,隨後非三引號字符串,通過EOL,"
不會完成。
的tokenize模塊可以告訴你它正在做什麼:
s = '""""string""""'
g = tokenize.generate_tokens(io.StringIO(s).readline)
t = list(g)
print(t)
打印帶有'""""string"""'
一個字符串標記,那麼ERRORTOKEN令牌'"'
。
一般來說,當你無法弄清楚如何解釋the grammar(我假設你先看過語法?)時,回答任何問題的最好方法是使用tokenize,ast和friends。
Python是將其解釋爲:
""""string""" " "
#^^^These three " to start the string literal. The next one counts in the string.
#The three last ones after the last one are counted as the end.
公告的偏離"
。
你可以這樣做:
'''"string"'''
因爲Python從左到右解析;它不會從右到左查找字符串的結尾。 –