提问人:Alex Gordon 提问时间:8/25/2010 最后编辑:CryptoFoolAlex Gordon 更新时间:11/17/2023 访问量:1228037
python:SyntaxError:扫描字符串文字时出现 EOL
python: SyntaxError: EOL while scanning string literal
答:
你没有在行尾之前放一个。"
如果要执行此操作,请使用:"""
""" a very long string ......
....that can span multiple lines
"""
评论
(假设您的字符串中没有/想要换行符......
这个字符串到底有多长?
我怀疑从文件或命令行读取的一行的长度是有限制的,并且由于行尾被砍掉,解析器看到类似(没有结尾)的内容,从而抛出解析错误?s1="some very long string..........
"
您可以通过转义源中的换行符将长行拆分为多行,如下所示:
s1="some very long string.....\
...\
...."
我遇到了这个问题 - 我最终发现原因是我在字符串中包含了字符。如果您有其中任何一个,请“逃避”它们,它应该可以正常工作。\
\\
评论
r
r'the cat in the hat\'
我也有这个确切的错误消息,对我来说,通过添加“ \”解决了问题
事实证明,我的长字符串被分成大约八行,末尾有“\”,其中一行缺少一个“\”。
Python IDLE 没有指定此错误的行号,但它突出显示了一个完全正确的变量赋值语句,让我大吃一惊。实际畸形字符串语句(多行长,带“\”)与要突出显示的语句相邻。也许这会帮助别人。
我也遇到过这个问题,虽然这里有答案,但我想对此提出一个重要的观点
之后不应有空格。注意它/
在我的情况下,我的字典中有单引号字符串。我替换了 with 和 with 的所有实例,它解决了我的问题,在 eval'ed dict 中正确返回转义换行符。\r\n
\r
\\r
\n
\\n
ast.literal_eval(my_str.replace('\r','\\r').replace('\n','\\n'))
.....
评论
ast.literal_eval
ast.literal_eval('{"my": "dict"}"}')
我遇到了类似的问题。我有一个字符串,其中包含 Windows 中文件夹的路径,例如 问题是这是一个转义字符,因此为了在字符串中使用它,您需要再添加一个。C:\Users\
\
\
不對:C:\Users\
正确:C:\\Users\\
评论
就我而言,我使用 Windows,所以我必须使用双引号而不是单引号。
C:\Users\Dr. Printer>python -mtimeit -s"a = 0"
100000000 loops, best of 3: 0.011 usec per loop
我在postgresql函数中收到此错误。我有一个很长的 SQL,为了更好的可读性,我用 \ 分成多行。然而,这就是问题所在。我删除了所有并将它们放在一行中以解决问题。我正在使用pgadmin III。
就我使用Mac OS X而言,我有以下声明:
model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)
我收到错误:
File "<stdin>", line 1
model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)
^
SyntaxError: EOL while scanning string literal
在我更改为:
model.export_srcpkg(platform, toolchain, "mymodel_pkg.zip", "mymodel.dylib")
成功了。。。
大卫
你的跨越多条线。为了做到这一点(即你希望你的字符串跨越多行),你必须使用三引号(“”“)。variable(s1)
s1="""some very long
string............"""
你可以试试这个:
s = r'long\annoying\path'
评论
s = r'long\annoying\path\\'
以前的大多数答案都是正确的,我的答案与aaronasterling非常相似,你也可以做3个单引号 s1='''一些很长的字符串............'''
在这种情况下,三个单引号或三个双引号都可以! 例如:
"""Parameters:
...Type something.....
.....finishing statement"""
或
'''Parameters:
...Type something.....
.....finishing statement'''
我在访问任何硬盘目录时都遇到了同样的问题。 然后我用这种方式解决了它。
import os
os.startfile("D:\folder_name\file_name") #running shortcut
os.startfile("F:") #accessing directory
上图显示了错误和已解决的输出。
以下所有代码均使用 Python 3.8.3 进行了测试
最简单 -- 只需使用三引号。
任一单:
long_string = '''some
very
long
string
............'''
或双倍:
long_string = """some
very
long
string
............"""
注意:三引号字符串保留缩进,这意味着
long_string = """some
very
long
string
............"""
和
long_string = """some
very
long
string
............"""
甚至只是
long_string = """
some
very
long
string
............"""
是不一样的。
标准库中有一个 textwrap.dedent
函数可以处理这个问题,尽管使用它是不可能的。
您也可以在字符串内部使用,驻留在单行上:\n
long_string = "some \nvery \nlong \nstring \n............"
此外,如果你的字符串中不需要任何换行符(即换行符),你可以在常规字符串中使用:\
long_string = "some \
very \
long \
string \
............"
就我而言,我忘记了字符串末尾的('或“)。例如“ABC”或“ABC”
当代码中定义字符串的方式存在问题时,会出现错误“SyntaxError: EOL while scanning string literal”。错误消息指示在正确关闭字符串之前已到达字符串的末尾。 注意:确保使用反斜杠字符 () 正确转义文件路径
在窗口路径的末尾使用 \,它会正常工作,如下所示
basePath = r'C:\Users\asaini2\OneDrive - Discover\arpan\Principal Data Science\git-project-config\\'
我收到此消息,看不到字符串(在 IDLE windows python3.8 中):
哎呀,代码中有一个虚假的额外引号 这导致 pr0blem 出现在看起来像未引用的文本中
评论
"\"