我在Python的交互式控制台中尝试了以下内容:
>>> """"string"""
'"string'
>>> """"string""""
SyntaxError: EOL while scanning string literal
我希望后一种情况""""string""""
返回'"string"'
因为我在开头有三个引号,在结尾有三个引号。 Python如何解释它?
答案 0 :(得分:1)
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"'''
答案 1 :(得分:1)
它会看到三重引号的字符串""""string"""
,后跟一个非三重引号的字符串,该字符串无法通过EOL "
完成。
tokenize模块可以显示它正在做什么:
s = '""""string""""'
g = tokenize.generate_tokens(io.StringIO(s).readline)
t = list(g)
print(t)
这会打印带有'""""string"""'
的STRING令牌,然后带有'"'
的ERRORTOKEN令牌。
一般来说,当你无法弄清楚如何解释the grammar(我假设你先看过语法?)时,回答任何问题的最佳方法是使用tokenize,ast和friends