python:SyntaxError:EOL扫描字符串文字时

python: SyntaxError: EOL while scanning string literal

我在s1="some very long string............"中有上述错误。

有人知道我做错了什么吗?


你不能把一个"放在行尾之前。

如果您想这样做,请使用"""

1
2
3
""" a very long string ......
....that can span multiple lines
"""


我遇到了这个问题——我最终发现原因是我在字符串中包含了\个字符。如果你有这些,用\\把它们"逃走",它会很好地工作。


(假设您的字符串中没有/不需要换行符…)

这根绳子真的有多长?

我怀疑从文件或命令行读取的行的长度是有限制的,并且由于行尾被切掉,解析器会看到类似于s1="some very long string..........的内容(没有结束"),从而引发解析错误?

您可以通过如下转义源中的换行符,将长行拆分为多行:

1
2
3
s1="some very long string.....\
...\
...."

在我的情况下,我在我的单引号字典字符串中有

。我用\
替换了
的所有实例,用\
替换了
的所有实例,并解决了我的问题,正确地返回了逃避听写中的越界。

1
2
3
4
5
6
ast.literal_eval(my_str.replace('
'
,'\
'
).replace('
'
,'\
'
))
  .....

我也有这个问题,虽然这里有答案,但我想指出一个重要的问题之后/不应有空位,要注意。


我也面临同样的问题。我有一个字符串,其中包含指向Windows中某个文件夹的路径,例如C:\Users\,问题是\是一个转义字符,因此要在字符串中使用它,您需要再添加一个\

不正确:C:\Users\

正确:C:\\\Users\\\


我在PostgreSQL函数中得到了这个错误。我有一个很长的SQL,为了更好的可读性,我把它分成了多行。然而,这就是问题所在。为了解决这个问题,我删除了所有内容,并将它们放在一行中。我用的是PGADMIN III。


在我的例子中,我使用Windows,所以我必须使用双引号而不是单引号。

1
2
C:\Users\Dr. Printer>python -mtimeit -s"a = 0"
100000000 loops, best of 3: 0.011 usec per loop


我也收到了这个确切的错误消息,对于我来说,问题是通过添加一个""来解决的。

结果发现,我的长线,在最末端被打断成8行,其中一行缺少一个""。

python idle没有指定此错误所在的行号,但它以红色突出显示了一个完全正确的变量赋值语句,使我无法执行此操作。实际的畸形字符串语句(多行长,带"")与要突出显示的语句相邻。也许这能帮助别人。


您的variable(s1)跨越多条线。为了做到这一点(即希望字符串跨越多行),必须使用三引号(")。

1
2
s1="""some very long
string............"""

对于Mac OS X,我有以下声明:

1
model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)

我得到了错误:

1
2
3
4
  File"<stdin>", line 1
model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)
                                                                             ^
SyntaxError: EOL while scanning string literal

在我改为:

1
model.export_srcpkg(platform, toolchain,"mymodel_pkg.zip","mymodel.dylib")

它奏效了…

戴维