Автор оригинала: Pankaj Kumar.
Синтаксисная ошибка: EOL во время сканирования строки литерала
Python – это интерпретированный язык, который по существу означает, что каждая строка кода выполняется по одной, а не преобразование всей программы в нижний код сразу.
Когда переводчик Python сканирует каждую строку кода и находит что-то необычное, он поднимает ошибку под названием Синтаксисная ошибка . Отказ Эти ошибки могут быть подняты «пропущенным кронштейном», «отсутствующей конечной цитатой» и другими основными аномалиями в синтаксисе.
Синтаксическая ошибка, которую мы собираемся обсудить в этой статье, это «EOL при сканировании строкового литерала».
Что означает эта ошибка?
Мы не можем решить проблему, если мы не все это понимаем. EOL обозначает «конец линии». Ошибка означает, что интерпретатор Python достиг конца линии, когда он пытался сканировать строку литерала.
Струнные литералы (константы) должны быть заключены в одиночные и двойные кавычки. Достигая «Конец линии» Во время сканирования относится к достижению последнего символа строки и не сталкиваясь с окончательными кавычками.
# String value s = "This is a string literal... # Printing the string print(s)
Запуск вышеуказанного кода дает следующий выход:
File "EOL.py", line 2 s = "This is a string literal... ^ SyntaxError: EOL while scanning string literal
Небольшая стрелка указывает последний символ строки, указывающей на то, что ошибка произошла при расстановке этого компонента оператора.
Теперь, когда мы понимаем проблему, давайте посмотрим на некоторые экземпляры, где он может появиться во время работы кода Python.
Как исправить «Синтаксис ошибки: EOL во время сканирования строкового литерала»
Может быть четыре основных ситуация, когда эта ошибка может быть встречена:
Отсутствует окончание цитата
Как объяснено в приведенном выше фрагменте кода, интерпретатор Python поднимает ошибку синтаксиса, когда она достигает конца литерала строки и находит, что кавычка отсутствует.
# Situation #1 # Missing the ending quotation mark s = "This is a string literal... # Printing the string print(s)
Причина этой синтаксической ошибки довольно очевидна. Каждый язык имеет несколько основных правил синтаксиса, которые при нарушении приводят к ошибкам.
Решение:
Тривиальное решение состоит в том, чтобы уважать правило синтаксиса и разместить окончание кавычки.
# Solution #1 # Place the ending quotation mark s = "This is a string literal..." # Printing the string print(s)
Использование неправильного окончания кавычки
Python позволяет использовать ''
и ""
для ограждения строковых констант. Иногда программисты используют неправильную котировочную аналог для окончания строкового значения.
# Situation #2 # Incorrect ending quotation mark s = "This is a string literal...' # Printing the string print(s)
Несмотря на то, что строка, кажется, прилагается, это не так. Переводчик Python ищет соответствующий кавычка в конце строки.
Решение:
Основное решение состоит в том, чтобы соответствовать началу и окончанию кавычек.
# Solution #2 # Match the quotation marks s = "This is a string literal..." # Printing the string print(s)
Константа строки растяжения к нескольким линиям
Многие начинающие Python программисты делают ошибку растягивающих утверждений на несколько строк. Python считает новую строку как конец утверждения, в отличие от C ++ и Java, которая считает ';'
как конец заявления.
# Situation #3 # String extending to multiple lines s = "This is a string literal... Going to the next line" # Printing the string print(s)
Сначала код может показаться обычным, но, как только начата новая строка, интерпретатор Python ставится конец этому оператору и повышает ошибку для не включения константы строки.
Решение 1:
Escape Sequence '\ N'
Может использоваться для обеспечения эффекта новой линии на строку. Посетить здесь узнать о других побегающихся последовательностях.
# Solution #3.1 # Using the escape sequences \n -> Newline s = "This is a string literal... \n Going to the next line" # Printing the string print(s)
Решение 2:
Другое решение – использовать тройные кавычки, '' '
или "" "
для хранения многострочных строковых литералов.
# Solution #3.2 # Using triple quotation marks s = """This is a string literal... Going to the next line""" # Printing the string print(s)
Используя обратную косание перед окончанием кавычки
Обратная косание '\'
несет ответственность за побежение строки и вызывая ошибку синтаксиса.
# Situation #4 # Storing a directory path s = "\home\User\Desktop\" # Printing the string print(s)
Последняя обратная косая черта до кавычки ускользает от постоянной строки и переводчик Python считает \ "
как один символ. Эта побегающая последовательность переводит к цитату (")
Отказ
Решение:
Решение состоит в том, чтобы заменить обратную косание с помощью escape Sequence для обратной ячейки (\\)
Отказ
# Solution #4 # Storing a directory path s = "\\home\\User\\Desktop\\" # Printing the string print(s)
Заключение
Одна ошибка в коде, охватывающей тысячу строки, может стоить часы для отладки. Поэтому рекомендуется писать такие коды с экстремальной концентрацией и использованием правильного синтаксиса.
Мы надеемся, что эта статья была плодотворной в решении ошибок читателя. Спасибо за чтение.