我用三串以下列方式:Python的三重串报价申报
str="""jeff"""
str=""""jeff"""
str=""""jeff"""" # error
str=""""jeff """"
第三个是错误,任何人都可以解释为什么这是错误?
我用三串以下列方式:Python的三重串报价申报
str="""jeff"""
str=""""jeff"""
str=""""jeff"""" # error
str=""""jeff """"
第三个是错误,任何人都可以解释为什么这是错误?
三个引号终止字符串,因此该
str=""""jeff""""
被解析为这样的:
str= """ ("jeff) """ (")
尾随报价是问题。
BTW,看着BNF definition
longstring ::= "'''" longstringitem* "'''"
| '"""' longstringitem* '"""'
很明显,明星*
是不贪心,我不知道,虽然如果这是什么地方记录。
响应于该评论,这
str = ''''''''jeff'''
被解释为
(''')(''')('')(jeff)(''') <-- error, two quotes
这
str = '''''''''jeff'''
被解释为
str = (''')(''')(''')(jeff)(''') <-- no error, empty string + jeff
只能使用3个引号。
第二字符串被解释为:“杰夫
第三字符串被解释为:”杰夫,后跟一个杂散报价。
STR = “” “杰夫” “” - > STR '杰夫'
STR = “” “” 杰夫 “”” - >多STR '杰夫'
STR = “” “” jeff“”“”#error - >这里parser认为你声明“”,“”,jeff,“”,“”
str =“”“”jeff“”“”#error - > same作为前一个
>>> """"a""""
File "<stdin>", line 1
""""a""""
^
SyntaxError: EOL while scanning string literal
>>> """"a """"
File "<stdin>", line 1
""""a """"
^
SyntaxError: EOL while scanning string literal
为了避免它不喜欢这个 “” “\” A \ “” “”
此外,作为tng345提到的,你可以看看在BNF
什么在这种情况下发生的'海峡=“”“”“”“”杰夫“”'',它只有3结尾的引号,仍然错误 – avasal 2012-02-15 08:41:25
@avasal:尝试添加一个;)。查看更新 – georg 2012-02-15 08:47:41