[英]python: SyntaxError: EOL while scanning string literal
我在s1="some very long string............"
有上述错误s1="some very long string............"
有谁知道我做错了什么?
你没有在行尾放一个"
。
如果要执行此操作,请使用"""
:
""" a very long string ......
....that can span multiple lines
"""
我遇到了这个问题 - 我最终发现原因是我在字符串中包含了\\
字符。 如果您有任何这些,请使用\\\\
“转义”它们,它应该可以正常工作。
(假设您的字符串中没有/想要换行符...)
这个字符串到底有多长?
我怀疑从文件或命令行读取的行的长度是有限制的,并且因为行的末尾被切掉,解析器会看到类似s1="some very long string..........
(没有结尾"
)并因此引发解析错误?
您可以通过转义源代码中的换行符将长行拆分为多行,如下所示:
s1="some very long string.....\
...\
...."
在我的情况下,我的单引号字典字符串中有\\r\\n
。 我用\\\\r
替换了\\r
所有实例,用\\\\r
\\n
替换了\\\\n
并且它解决了我的问题,在 eval'ed dict 中正确返回了转义的换行符。
ast.literal_eval(my_str.replace('\r','\\r').replace('\n','\\n'))
.....
我遇到了类似的问题。 我有一个字符串,其中包含 Windows 中文件夹的路径,例如C:\\Users\\
问题是\\
是一个转义字符,因此为了在字符串中使用它,您需要再添加一个\\
。
不正确: C:\\Users\\
正确: C:\\\\\\Users\\\\\\
你可以试试这个:
s = r'long\annoying\path'
我也有这个问题,虽然这里有答案,但我想在此之后强调一个重要的点/
不应该有空格。注意它
我也有这个确切的错误消息,对我来说问题是通过添加“\\”来解决的
结果发现,我的长字符串,在最后用“\\”分成了大约八行,在一行中缺少一个“\\”。
Python IDLE 没有指定该错误所在的行号,但它以红色突出显示了一个完全正确的变量赋值语句,这让我很失望。 实际畸形的字符串语句(多行带有“\\”)与突出显示的语句相邻。 也许这会帮助别人。
就我而言,我使用 Windows,所以我必须使用双引号而不是单引号。
C:\Users\Dr. Printer>python -mtimeit -s"a = 0"
100000000 loops, best of 3: 0.011 usec per loop
在我使用 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")
有效...
大卫
我在 postgresql 函数中收到此错误。 我有一个很长的 SQL,为了更好的可读性,我用 \\ 分成了多行。 然而,这就是问题所在。 我删除了所有内容并将它们放在一行中以解决问题。 我正在使用 pgadmin III。
就我而言,我忘记了字符串末尾的(' 或 ") 。例如 'ABC'或"ABC"
您的variable(s1)
跨越多行。 为了做到这一点(即你希望你的字符串跨越多行),你必须使用三重引号(""")。
s1="""some very long
string............"""
在这种情况下,三个单引号或三个双引号都可以使用! 例如:
"""Parameters:
...Type something.....
.....finishing statement"""
或者
'''Parameters:
...Type something.....
.....finishing statement'''
以前的大多数答案都是正确的,我的答案与 aaronasterling 非常相似,您也可以做 3 个单引号 s1='''some very long string .........'''
以下所有代码均使用 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 \
............"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.