" EOL while scanning string literal"



如何在没有获得"扫描字符串文字时 EOL "的情况下计算长文本中的空格数? 并且还使用了"计数"功能,文本是:"'我确定我不是艾达,'她说,'因为她的头发长成这么长的小环,而我的头发根本不是小环;"

此错误与任何SyntaxError一样,仅来自解析器。

除非你调用evalexec或(在Python 2.x中)input,否则这意味着问题字符串在你的代码中,而不是在输入。例如,也许是这样的:

spaces = s.count(" ')

在这种情况下,你有一个以双引号开头的字符串,一直到下一个双引号。由于没有下一个双引号,这是一个语法错误。

或者,正如 Mark Ransom 指出的那样,如果字符串本身是代码中的文字,也许您的文本编辑器将其分成两行:

s = "'I'm sure I'm not Ada,' she said, 'for her hair goes in such long ringlets, and 
mine doesn't go in ringlets at all;"
s.count(" ")
同样,在这种情况下

,您有一个以第一个双引号开头的字符串,并且该行上没有下一个双引号,因此这是相同的语法错误。(尽管在这种情况下,您甚至没有达到您所抱怨的count的界限。这就是为什么异常有回溯的原因:告诉你,或者试图帮助你的人,问题实际发生在哪里,所以你不必猜测。


如果您使用的是eval或相关函数,则要求 Python 将字符串视为代码,并且该字符串具有类似的问题。

显而易见的解决方案是 不打电话给eval .

如果你在Python 2.x中调用input,那和eval(raw_input(…))是一样的,所以只需更改为raw_input

您可能没有正确应用str.count()方法(即,您有一个无效的字符串)。

s = "'I'm sure I'm not Ada,' she said, 'for her hair goes in such long ringlets, and mine doesn't go in ringlets at all;"
#If you get the same SyntaxError: EOL at this point, there is something
#wrong with the string you are inputting.
s.count(' ') #Result: 22

相关内容

最新更新