python: SyntaxError: EOL при сканировании строкового литерала - PullRequest
126 голосов
/ 25 августа 2010

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

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

Ответы [ 11 ]

175 голосов
/ 25 августа 2010

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

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

""" a very long string ...... 
....that can span multiple lines
"""
72 голосов
/ 28 февраля 2011

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

16 голосов
/ 25 августа 2010

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

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

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

s1="some very long string.....\
...\
...."
7 голосов
/ 24 октября 2014

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

ast.literal_eval(my_str.replace('\r','\\r').replace('\n','\\n'))
  .....
4 голосов
/ 31 декабря 2015

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

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

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

4 голосов
/ 17 августа 2013

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

2 голосов
/ 29 января 2018

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

2 голосов
/ 09 сентября 2016

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

2 голосов
/ 15 августа 2013

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

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

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

1 голос
/ 13 октября 2018

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

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