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

问题描述 投票:118回答:11

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

有谁知道我做错了什么?

python string string-literals
11个回答
176
投票

你没有在行结束前放置"

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

""" a very long string ...... 
....that can span multiple lines
"""

1
投票

在我使用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")

有效...

大卫


1
投票

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

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

73
投票

我有这个问题 - 我最终得出结论,原因是我在字符串中包含了\字符。如果你有任何这些,用\\“逃避”它们,它应该工作正常。


16
投票

(假设你的字符串中没有/想要换行...)

这个字符串真的有多长?

我怀疑从文件或命令行读取的行的长度是有限的,并且因为该行的结尾被解析,所以解析器看起来像s1="some very long string..........(没有结束"),因此抛出解析错误?

您可以通过在源中转义换行符来分割多行中的长行,如下所示:

s1="some very long string.....\
...\
...."

7
投票

在我的情况下,我在单引号词典字符串中有\r\n。我用\r\\r\n替换了\\n的所有实例,它解决了我的问题,正确地返回了eval'ed dict中的逃逸换行符。

ast.literal_eval(my_str.replace('\r','\\r').replace('\n','\\n'))
  .....

4
投票

我也遇到过这个问题,虽然这里有答案,但我想在/之后重要一点,不应该有空的空间。意识到这一点


4
投票

我遇到了类似的问题。我有一个字符串,其中包含Windows中文件夹的路径,例如C:\Users\问题是\是一个转义字符,所以为了在字符串中使用它,你需要再添加一个\

不正确:C:\Users\

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


2
投票

我也有这个确切的错误信息,对我来说,问题是通过添加“\”修复的

事实证明,我的长弦,在最后分成了大约八行“\”,在一行上错过了一个“\”。

Python IDLE没有指定此错误所在的行号,但它突出显示了一个完全正确的变量赋值语句,让我失望。实际的畸形字符串语句(多行长为“\”)与突出显示的语句相邻。也许这会帮助别人。


2
投票

在我的情况下,我使用Windows所以我必须使用双引号而不是单引号。

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

2
投票

我在postgresql函数中收到此错误。我有一个很长的SQL,我用\分为多行,以提高可读性。但是,这就是问题所在。我删除了所有并将它们排成一行以解决问题。我正在使用pgadmin III。

© www.soinside.com 2019 - 2024. All rights reserved.