2014-11-21 2 views
-4

как я могу подсчитать количество пробелов в длинном тексте, не получая «EOL во время сканирования строкового литерала»? а также, используя функцию «count», текст гласит: «Я уверен, что я не Ада, - сказала она, - потому что ее волосы уходят в такие длинные локоны, и у меня вообще нет локонов; "«EOL во время сканирования строки литерала»

+6

Пожалуйста, покажите свой код. – abarnert

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

Во-первых, вопрос уже говорит, что он использует 'count'. Во-вторых, 'string.count' не метод, а функция, и это устаревшая функция, которая делает то же самое, что и метод' str.count', поэтому я не уверен, почему вы думаете, что переход на это поможет. – abarnert

+0

Да, 'str.count' - это метод, как я уже сказал, а' string.count' - нет. Если вы говорите пользователю использовать тот же самый метод, который он уже использует, или говоря ему, чтобы он переключился на функцию, которая делает то же самое, я не вижу, как это поможет. – abarnert

+0

Невозможно использовать метод неправильно, чтобы повысить это исключение. Значит, он явно что-то делает не так. Если вы не можете догадаться, что это такое, вы можете прокомментировать, проголосовать, чтобы закрыть вопрос, или опросить вопрос, но написать ответ, который не может решить проблему, не помогает. – abarnert

4

Эта ошибка, как и любая SyntaxError, исходит только от анализатора.

Если вы не звоните eval, exec, или (в 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.

Если вы звоните input в Python 2.x, это то же самое, что и eval(raw_input(…)), поэтому просто измените на raw_input.

+0

«эта ошибка исходит только от анализатора». +1 Я этого не знал. –

+0

@RickTeachey: ну, OP не показывал трассировку или упоминал, что тип ошибки был ['SyntaxError'] (https://docs.python.org/3/library/exceptions.html#SyntaxError), что означает вы бы действительно знали, что если вы узнали строку описания «EOL while scan» ... – abarnert

Смежные вопросы