如何在没有获得"扫描字符串文字时 EOL "的情况下计算长文本中的空格数? 并且还使用了"计数"功能,文本是:"'我确定我不是艾达,'她说,'因为她的头发长成这么长的小环,而我的头发根本不是小环;"
此错误与任何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 将字符串视为代码,并且该字符串具有类似的问题。
显而易见的解决方案是 不打电话给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