如何计算长文本中的空格数而不会在扫描字符串文字时获得“EOL”?并且还使用了“计数”这个功能,文字是:“'我确定我不是阿达,'她说,'因为她的头发长得很短,而我的头发根本就没有卷发; “
答案 0 :(得分:4)
此错误与任何SyntaxError
一样,只来自解析器。
除非您正在调用eval
,exec
或(在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