Python - How To EOL While Scanning String Literal in Python

ID : 46

viewed : 113

Tags : PythonPython String

vote vote

91

This tutorial will discuss the syntax error EOL while scanning string literal in Python.

Raw Strings in Python

Raw strings are used for specifying regular expressions in Python. Before the starting quotation mark, a raw string is declared by an r or R. A raw string does not need any escape characters and treats the backslash as a literal string by convention. The following code snippet demonstrates the working of a raw string.

print(r'\t\\') 

Output:

\t\\ 

Now, lets see how this would look like in a normal string.

print('\t\\') 

Output:

	\ 

The difference is crystal clear. When we use a raw string, the python interpreter considers \t\\ as \t\\, but when we use a regular string, the Python interpreter considers the \t as a tab and the following \ as an escape character for the last \.

EOL While Scanning String Literal in Python

The only limitation with these is that we can only end them with an even number of backslashes. If a raw string ends with an odd number of backslashes, the Python interpreter shows the syntax error EOL while scanning string literal. This is because even in raw strings, the quotation mark can be escaped by a backslash. With an odd number of backslashes in the end, the interpreter thinks that the last backslash is used to escape the closing quotation mark and keeps scanning for the end of the string. This phenomenon has been demonstrated in the coding example below.

print(r'\t\\\') 

Output:

File "<ipython-input-1-d2ab522bcdab>", line 1     print(r'\t\\\')                    ^ SyntaxError: EOL while scanning string literal 

We demonstrated the EOL while scanning string literal error while writing raw strings in Python.

  • Related HOW TO?