2014-11-21 116 views
-4

如何计算长文本中空格的数量而不会在扫描字符串文字时出现“EOL”?并且使用'count'函数,文本是:''我确定我不是Ada,'她说,'因为她的头发长得很长,而且我的头发根本没有卷起来; ““扫描字符串文字时的EOL”

+6

请显示您的代码。 – abarnert 2014-11-21 21:04:43

+1

是否有可能无论您用于文本编辑器将该字符串分成两行? – 2014-11-21 21:08:28

回答

-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 
+0

首先,这个问题已经说他正在使用'count'。其次,'string.count'不是一个方法,而是一个函数,它是一个不推荐的函数,它和'str.count'方法一样,所以我不确定为什么你认为切换到这个方法会有帮助。 – abarnert 2014-11-21 21:05:49

+0

是的,'str.count'是一种方法 - 正如我所说的,而'string.count'则不是。无论您是告诉用户使用他已经使用的相同方法,还是告诉他切换到​​执行相同操作的功能,我都看不出这会有什么帮助。 – abarnert 2014-11-21 21:10:25

+0

您无法正确使用会引发该异常的方法。所以他显然做了一些错误的事情。如果你无法猜测其他东西是什么,你可以发表评论,投票结束问题或者降低问题的质量,但是编写一个无法解决问题的答案是没有用的。 – abarnert 2014-11-21 21:17:58

4

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

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

spaces = s.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;" 
s.count(" ") 

在这种情况下,再次,你得一个以第一个双引号开头的字符串,并且行中没有下一个双引号,所以它是相同的语法错误。 (尽管在这种情况下,你甚至没有达到你所抱怨的count的范围,这就是为什么例外有追溯:告诉你,或者那些试图帮助你的人,问题实际上在哪里发生的事情,所以你不必去猜测。)


如果您使用eval或相关功能,你问Python来对待一个字符串,就好像它是代码,而该字符串有类似的问题。

明显的解决方案是不要拨打eval

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

+0

“这个错误只来自解析器”。 +1我不知道。 – 2014-11-21 21:34:06

+0

@RickTeachey:那么,OP没有显示回溯或提到错误类型是['SyntaxError'](https://docs.python.org/3/library/exceptions.html#SyntaxError),这意味着你只有真正知道,如果你认识到“EOL while scanning”描述字符串...... – abarnert 2014-11-21 22:15:06