“扫描字符串字面时EOL”

时间:2014-11-21 21:01:20

标签: python

如何计算长文本中的空格数而不会在扫描字符串文字时获得“EOL”?并且还使用了“计数”这个功能,文字是:“'我确定我不是阿达,'她说,'因为她的头发长得很短,而我的头发根本就没有卷发; “

2 个答案:

答案 0 :(得分:4)

此错误与任何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将字符串视为代码,并且该字符串也存在类似问题。< / p>

显而易见的解决方案是不要拨打eval

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

答案 1 :(得分:-1)

您可能没有正确应用the str.count() method(即,您的字符串无效)。

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