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


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

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

10 92

10 ответов:

вы не ставите " до конца строки.

использовать """ Если вы хотите сделать это:

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

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

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

как долго это строка на самом деле?

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

вы можете разделить длинные строки на несколько строк, экранируя разрывы строк в вашем источнике, например это:

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

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

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

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

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

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

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

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

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

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

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

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

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

В моем случае с 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")

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

Дэвид