我用以下方式使用三重字符串:
str="""jeff"""
str=""""jeff"""
str=""""jeff"""" # error
str=""""jeff """"
Run Code Online (Sandbox Code Playgroud)
第三个是错误,任何人都可以解释为什么这是错误?
三个引号终止一个字符串,所以这个
str=""""jeff""""
Run Code Online (Sandbox Code Playgroud)
被解析为:
str= """ ("jeff) """ (")
Run Code Online (Sandbox Code Playgroud)
尾随引用是问题所在.
BTW,看看BNF的定义
longstring ::= "'''" longstringitem* "'''"
| '"""' longstringitem* '"""'
Run Code Online (Sandbox Code Playgroud)
很明显,这颗恒星*是非贪婪的,我不知道这是否记录在某处.
在回应评论时,这个
str = ''''''''jeff'''
Run Code Online (Sandbox Code Playgroud)
被解释为
(''')(''')('')(jeff)(''') <-- error, two quotes
Run Code Online (Sandbox Code Playgroud)
还有这个
str = '''''''''jeff'''
Run Code Online (Sandbox Code Playgroud)
被解释为
str = (''')(''')(''')(jeff)(''') <-- no error, empty string + jeff
Run Code Online (Sandbox Code Playgroud)