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

В этом руководстве вы узнаете, как исправить одну из самых распространенных ошибок Python: SyntaxError – EOL при сканировании строкового литерала. Существует три основные причины этой ошибки, и это руководство поможет вам решить каждую из них. SyntaxErrors указывают на ошибки в синтаксисе вашего кода. Поскольку синтаксис кода критически важен для того, как Python интерпретирует ваш код, знание того, как решать такие проблемы, очень важно для Pythonista любого уровня навыков.

К концу этого учебного пособия вы узнаете:

  • Что означает SyntaxError

  • Каковы 3 основные причины ошибки и как их исправить?

Содержание

Разрешение синтаксической ошибки Python: EOL при сканировании строкового литерала

Чтобы исправить ошибку синтаксиса Python: EOL при сканировании строкового литерала, вы можете использовать любой из следующих методов:

  1. Закрытые строки, у которых отсутствует кавычка

    Если в ваших строках отсутствуют кавычки в конце, добавьте соответствующий символ кавычек.

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

    Если ваша строка занимает несколько строк, убедитесь, что вы заключаете её в тройные кавычки.

  3. Экранирование строк, охватывающих несколько строк, с помощью символа

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

  4. Убедитесь, что строки используют совпадающие кавычки

    Если строки используют несовпадающие кавычки, исправьте их на совпадающие.

Понимание синтаксической ошибки Python: EOL при сканировании строкового литерала

Что такое синтаксическая ошибка в Python?

В Python возникает ошибка SyntaxError, когда интерпретатор Python сталкивается с кодом, синтаксис которого является недействительным. Например, если не соблюдаются правила кода, такие как закрывающие кавычки, Python вызывает SyntaxError.

Ошибки синтаксиса относятся к проблемам в том, как написан ваш код. Исправление этих проблем связано с исправлением синтаксиса вашего кода. К счастью, трассировка, которую возвращает Python об ошибке, указывает, где можно найти проблему.

Ошибка синтаксиса Python: EOL при сканировании строкового литерала указывает на строки, неправильно заканчивающиеся в конце строки кода. Это может указывать на три основные причины, которые мы рассмотрим в этом руководстве!

Теперь, когда у вас есть четкое понимание того, к чему относится эта ошибка, давайте определим три основных причины этой ошибки.

Отсутствующие кавычки вызывают синтаксическую ошибку Python

Наиболее распространенной причиной ошибки Python SyntaxError: EOL while scanning string literal является отсутствие кавычек в конце строки. Это происходит, когда строка начинается с ', ", или """ и не закрывается должным образом.

Давайте посмотрим, как это выглядит в коде на Python:

# Возникновение ошибки SyntaxError при незакрытой строке
text = 'Добро пожаловать на bemind.gitbook.io
# Вызывает:
#   Input In [1]
#     text = 'Добро пожаловать на bemind.gitbook.io
#                                     ^
# SyntaxError: EOL while scanning string literal

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

Начиная с Python 3.10, это сообщение об ошибке станет гораздо понятнее. На самом деле, будет выдано другое SyntaxError, указывающее, какая строковая литерал не была закрыта должным образом. Давайте посмотрим, как это выглядит в Python 3.10+:

# Новая ошибка SyntaxError в Python 3.10
text = 'Добро пожаловать на bemind.gitbook.io

# Вызывает
#   File "", line 1
#     text = 'Добро пожаловать на bemind.gitbook.io
#            ^
# SyntaxError: unterminated string literal (detected at line 1)

Чтобы устранить эту проблему, нам просто нужно закрыть строку соответствующим символом кавычек. Давайте исправим эту ошибку и запустим наш код без проблем.

# Решение ошибки SyntaxError при незакрытых строках
text = 'Добро пожаловать на bemind.gitbook.io'

В следующем разделе вы узнаете, как исправить ошибку синтаксиса Python, вызванную строками, распространяющимися на несколько строк.

Строки, охватывающие несколько строк, вызывают синтаксическую ошибку Python

Еще одной причиной ошибки Python SyntaxError: EOL while scanning string literal является строки, охватывающие несколько строк. Python позволяет создавать многострочные строки. Однако эти строки необходимо создавать с использованием тройных кавычек, используя либо ''', либо """.

Следующий код вызовет ошибку SyntaxError в Python:

# Возникновение ошибки SyntaxError при строках, разделённых на несколько строк
text = 'Добро пожаловать на

bemind.gitbook.io'

# Вызывает:
#   Input In [3]
#     text = 'Добро пожаловать на
#                            ^
# SyntaxError: EOL while scanning string literal

Ошибка указывает место, где Python ожидал завершения строки. Однако в данном случае неясно, что строка действительно занимает несколько строк.

Мы можем устранить такого рода ошибку синтаксиса Python двумя методами:

  1. Мы можем обернуть нашу строку в тройные кавычки, или

  2. Уберите переносы строк

Разрешение строк, охватывающих несколько строк, с тройными кавычками

Чтобы устранить эту ошибку, строку просто нужно создать с помощью тройных кавычек. Это гарантирует, что Python корректно распознает, что строка должна занимать несколько строк. Давайте посмотрим, как мы можем устранить эту ошибку:

# Решение ошибки SyntaxError с использованием тройных кавычек
text = """Добро пожаловать на

bemind.gitbook.io"""

Используя тройные кавычки для строки, Python позволяет вашим строкам занимать несколько строк. Аналогично, можно использовать одинарные тройные кавычки, такие как '''.

Другой способ решить это — просто экранировать переносы строк.

Разрешение строк, охватывающих несколько строк, с экранированием строк

Python также позволяет избежать разрыва строк, используя символ \\. Это позволяет Python понять, что разрыв строки является эстетическим и его следует игнорировать. Давайте посмотрим, как мы можем решить нашу ошибку синтаксиса Python, используя символ экранирования.

# Решение ошибки SyntaxError с использованием экранирования строк
text = 'Добро пожаловать на  \
\
bemind.gitbook.io'

Можно видеть, что это позволяет интерпретатору правильно считывать многострочную строку. В следующем разделе вы узнаете, как устранить третью причину ошибки SyntaxError в Python.

Несовпадающие кавычки, вызывающие синтаксическую ошибку Python

Причиной ошибки Python SyntaxError: EOL while scanning string literal является использование несоответствующих кавычек. Эта ошибка возникает, когда в коде используются кавычки разных типов. Поскольку Python позволяет использовать как ', так и ", важно обеспечивать их последовательное использование.

Посмотрим, как может выглядеть эта ошибка:

# Возникновение ошибки SyntaxError при использовании несоответствующих кавычек
text = "Добро пожаловать на bemind.gitbook.io'

# Вызывает:
#   Input In [6]
#     text = "Добро пожаловать на bemind.gitbook.io'
#                                  ^
# SyntaxError: EOL while scanning string literal

Python указывает на то, что строка не закрыта должным образом. Он указывает, что в конце строки, следом за символом ', должна быть поддерживающая кавычка. Мы можем решить эту ошибку, просто используя соответствующий символ ":

# Resolving a Python SyntaxError Caused by Mismatched Quotes
text = "Welcome to bemind.gitbook.io"

Мы видим, что, используя одинаковые кавычки, ошибка устраняется.

Заключение

В этом руководстве вы узнали, как исправить ошибку Python SyntaxError: EOL while scanning string literal. Эта ошибка имеет три основные причины, которые были рассмотрены. Сначала вы узнали, как устранить ошибку, вызванную отсутствующими кавычками. Затем вы узнали, как решить ошибку, вызванную строками, растянутыми на несколько строк. Наконец, вы узнали, как исправить ошибку, вызванную несоответствующими кавычками.

Дополнительные ресурсы

Чтобы узнать больше о связанных темах, ознакомьтесь с руководствами ниже:

  • Как исправить: Ошибка отступа Python: unindent не соответствует ни одному уровню внешнего отступа.

  • Python: удаление специальных символов из строки

  • Python: удалить символ новой строки из строки

Last updated