2014-11-21 208 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