Reputation: 60691
I have the above-mentioned error in s1="some very long string............"
Does anyone know what I am doing wrong?
Upvotes: 224
Views: 1295833
Reputation: 18980
In my situation...
Python threw this error during an anomaly with Postgres. All variables were present in the concatenated string, so this error was NOT due to an issue in Python at all. There was a race condition with Postgres because there was a SQL query one line before this line this SQL query (with this concatenated string). The first SQL query had failed due to a missing variable it needed but the Python code returned okay (but not Postgres), but the Postgres connection got lost or interrupted. Therefore, the second Postgres SQL query (the code below) couldn't run.
SyntaxError('EOL while scanning string literal', ('<string>', 1, 184, '"select table_name from information_schema.tables WHERE table_name LIKE \'" + table_prefix + "_%\' AND table_schema = \'" + schema + "\' and table_type = \'BASE TABLE\''))
Upvotes: 0
Reputation: 145
I'm getting this message with no string in sight (in IDLE windows python3.8):
oops there was a spurious extra quote mark way back in the code which was causing the pr0blem to show up in what looked like unquoted text
Upvotes: 0
Reputation: 5181
use \ in the end of window path, and it will work just fine, as shown below
basePath = r'C:\Users\asaini2\OneDrive - Discover\arpan\Principal Data Science\git-project-config\\'
Upvotes: 0
Reputation: 61
The error "SyntaxError: EOL while scanning string literal" occurs when there is an issue with the way a string is defined in the code. The error message indicates that the end of the string was reached before the string was closed properly. Note: make sure that the file paths are properly escaped using the backslash character ()
Upvotes: 0
Reputation: 654
I faced a similar problem. I had a string which contained path to a folder in Windows e.g. C:\Users\
The problem is that \
is an escape character and so in order to use it in strings you need to add one more \
.
Incorrect: C:\Users\
Correct: C:\\Users\\
Upvotes: 13
Reputation: 505
In my case, I forgot (' or ") at the end of string. E.g 'ABC' or "ABC"
Upvotes: 4
Reputation: 139
All code below was tested with Python 3.8.3
Simplest -- just use triple quotes.
Either single:
long_string = '''some
very
long
string
............'''
or double:
long_string = """some
very
long
string
............"""
Note: triple quoted strings retain indentation, it means that
long_string = """some
very
long
string
............"""
and
long_string = """some
very
long
string
............"""
or even just
long_string = """
some
very
long
string
............"""
are not the same.
There is a textwrap.dedent
function in standard library to deal with this, though working with it is out of question's scope.
You can, as well, use \n
inside a string, residing on single line:
long_string = "some \nvery \nlong \nstring \n............"
Also, if you don't need any linefeeds (i.e. newlines) in your string, you can use \
inside regular string:
long_string = "some \
very \
long \
string \
............"
Upvotes: 2
Reputation: 919
I had faced the same problem while accessing any hard drive directory. Then I solved it in this way.
import os
os.startfile("D:\folder_name\file_name") #running shortcut
os.startfile("F:") #accessing directory
The picture above shows an error and resolved output.
Upvotes: 1
Reputation: 833
In this case, three single quotations or three double quotations both will work! For example:
"""Parameters:
...Type something.....
.....finishing statement"""
OR
'''Parameters:
...Type something.....
.....finishing statement'''
Upvotes: 1
Reputation: 22382
Most previous answers are correct and my answer is very similar to aaronasterling, you could also do 3 single quotations s1='''some very long string............'''
Upvotes: 0
Reputation: 373
Your variable(s1)
spans multiple lines. In order to do this (i.e you want your string to span multiple lines), you have to use triple quotes(""").
s1="""some very long
string............"""
Upvotes: 2
Reputation: 4917
In my case with Mac OS X, I had the following statement:
model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)
I was getting the error:
File "<stdin>", line 1
model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)
^
SyntaxError: EOL while scanning string literal
After I change to:
model.export_srcpkg(platform, toolchain, "mymodel_pkg.zip", "mymodel.dylib")
It worked...
David
Upvotes: 4
Reputation: 470
I was getting this error in postgresql function. I had a long SQL which I broke into multiple lines with \ for better readability. However, that was the problem. I removed all and made them in one line to fix the issue. I was using pgadmin III.
Upvotes: 3
Reputation: 1056
In my situation, I had \r\n
in my single-quoted dictionary strings. I replaced all instances of \r
with \\r
and \n
with \\n
and it fixed my issue, properly returning escaped line breaks in the eval'ed dict.
ast.literal_eval(my_str.replace('\r','\\r').replace('\n','\\n'))
.....
Upvotes: 12
Reputation: 70994
You are not putting a "
before the end of the line.
Use """
if you want to do this:
""" a very long string ......
....that can span multiple lines
"""
Upvotes: 294
Reputation: 19146
In my case, I use Windows so I have to use double quotes instead of single.
C:\Users\Dr. Printer>python -mtimeit -s"a = 0"
100000000 loops, best of 3: 0.011 usec per loop
Upvotes: 4
Reputation: 1241
I had this problem - I eventually worked out that the reason was that I'd included \
characters in the string. If you have any of these, "escape" them with \\
and it should work fine.
Upvotes: 124
Reputation: 7386
I too had this problem, though there were answers here I want to an important point to this
after
/
there should not be empty spaces.Be Aware of it
Upvotes: 5
Reputation: 713
I also had this exact error message, for me the problem was fixed by adding an " \"
It turns out that my long string, broken into about eight lines with " \" at the very end, was missing a " \" on one line.
Python IDLE didn't specify a line number that this error was on, but it red-highlighted a totally correct variable assignment statement, throwing me off. The actual misshapen string statement (multiple lines long with " \") was adjacent to the statement being highlighted. Maybe this will help someone else.
Upvotes: 4
Reputation: 1264
(Assuming you don't have/want line breaks in your string...)
How long is this string really?
I suspect there is a limit to how long a line read from a file or from the commandline can be, and because the end of the line gets choped off the parser sees something like s1="some very long string..........
(without an ending "
) and thus throws a parsing error?
You can split long lines up in multiple lines by escaping linebreaks in your source like this:
s1="some very long string.....\
...\
...."
Upvotes: 19