Python: SyntaxError: EOL при сканировании строкового литерала

У меня есть вышеупомянутая ошибка в s1="some very long string............"

Кто-нибудь знает, что я делаю не так?

Ответ 1

Вы не помещаете " до конца строки.

Используйте """, если вы хотите сделать это:

""" a very long string ...... 
....that can span multiple lines
"""

Ответ 2

У меня была эта проблема. В конечном итоге я решил, что причина в том, что в строку были включены символы \. Если у вас есть что-то из этого, "сбегите" с помощью \\, и он должен работать нормально.

Ответ 3

(Предполагая, что у вас нет/хотите разрывы строк в вашей строке...)

Как долго эта строка действительно?

Я подозреваю, что существует ограничение на длительность строки, считанной из файла или из командной строки, и потому, что конец строки набирается, парсер видит что-то вроде s1="some very long string.......... (без конца ") и таким образом выдает ошибку синтаксического анализа?

Вы можете разделить длинные строки в нескольких строках, выделив строки в вашем источнике следующим образом:

s1="some very long string.....\
...\
...."

Ответ 4

В моей ситуации я имел \r\n в моих словарных строках с одним кавычком. Я заменил все экземпляры \r на \\r и \n на \\n, и он исправил мою проблему, правильно вернув экранированные разрывы строк в eval'ed dict.

ast.literal_eval(my_str.replace('\r','\\r').replace('\n','\\n'))
  .....

Ответ 5

У меня тоже была эта проблема, хотя были ответы здесь, я хочу, чтобы важный момент для этого после / не должно быть пустых пространств. Осознавая его

Ответ 6

У меня возникла аналогичная проблема. У меня была строка, содержащая путь к папке в Windows, например. C:\Users\ Проблема заключается в том, что \ является escape-символом, поэтому для его использования в строках вам нужно добавить еще один \.

Неверно: C:\Users\

Правильно: C:\\\Users\\\

Ответ 7

У меня также было это точное сообщение об ошибке, для меня проблема была исправлена ​​добавлением "\"

Оказывается, что моя длинная строка, разбитая на восемь строк с "\" в самом конце, отсутствовала "\" на одной строке.

Идентификатор Python не указывал номер строки, в которой эта ошибка была включена, но она красно-подчеркнула полностью правильную инструкцию присваивания переменной, отбрасывая меня. Фактическое выражение о некорректной строке (несколько строк длиной с "\" ) было смежным с выделенным выражением. Возможно, это поможет кому-то другому.

Ответ 8

В моем случае я использую Windows, поэтому мне нужно использовать двойные кавычки вместо одиночного.

C:\Users\Dr. Printer>python -mtimeit -s"a = 0"
100000000 loops, best of 3: 0.011 usec per loop

Ответ 9

Я получаю эту ошибку в функции postgresql. У меня был длинный SQL, который я разбил на несколько строк с\для лучшей читаемости. Однако это была проблема. Я удалил все и сделал их в одну строку, чтобы исправить проблему. Я использовал pgadmin III.

Ответ 10

В моем случае с Mac OS X у меня было следующее утверждение:

model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib)

Я получаю ошибку:

  File "<stdin>", line 1
model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib)
                                                                             ^
SyntaxError: EOL while scanning string literal

После того, как я перехожу на:

model.export_srcpkg(platform, toolchain, "mymodel_pkg.zip", "mymodel.dylib")

Это сработало...

Дэвид

Ответ 11

Ваша variable(s1) занимает несколько строк. Чтобы сделать это (т.е. вы хотите, чтобы ваша строка занимала несколько строк), вы должны использовать тройные кавычки ("" ").

s1="""some very long 
string............"""