我在s1="some very long string............"
有谁知道我做错了什么?
答案 0 :(得分:165)
你没有在行结束前加"
。
如果您想这样做,请使用"""
:
""" a very long string ......
....that can span multiple lines
"""
答案 1 :(得分:68)
我遇到了这个问题 - 我最终得出结论,原因是我在字符串中包含了\
个字符。如果您有任何这些,请使用\\
“逃避”它们,它应该可以正常工作。
答案 2 :(得分:16)
(假设你的字符串中没有/想要换行符......)
这个字符串真的有多长?
我怀疑从文件或命令行读取一行的时间有限,并且因为该行的结尾被解析,所以解析器会看到类似s1="some very long string..........
的内容(没有结尾{ {1}})因此抛出解析错误?
您可以通过在源代码中转义换行符来分割多行中的长行:
"
答案 3 :(得分:7)
在我的情况下,我的单引号词典字符串中有\r\n
。我将\r
的所有实例替换为\\r
,将\n
替换为\\n
,并修复了我的问题,正确地返回了eval'ed字典中的转义换行符。
ast.literal_eval(my_str.replace('\r','\\r').replace('\n','\\n'))
.....
答案 4 :(得分:4)
我也遇到过这个问题,虽然这里有答案我想对此提出重要意见
后
/
不应该有空的空间。意识到它
答案 5 :(得分:3)
我遇到了类似的问题。我有一个字符串,其中包含Windows中文件夹的路径,例如C:\Users\
问题是\
是转义字符,因此要在字符串中使用它,您需要再添加一个\
。
不正确:C:\Users\
正确:C:\\\Users\\\
答案 6 :(得分:2)
就我而言,我忘记了字符串末尾的 (' 或 ")。例如 'ABC' 或 "ABC"< /p>
答案 7 :(得分:2)
我在postgresql函数中遇到此错误。我有一个很长的SQL,我用\分为多行,以提高可读性。但是,这就是问题所在。我删除了所有并将它们排成一行以解决问题。我正在使用pgadmin III。
答案 8 :(得分:2)
在我的情况下,我使用Windows,所以我必须使用双引号而不是单引号。
C:\Users\Dr. Printer>python -mtimeit -s"a = 0"
100000000 loops, best of 3: 0.011 usec per loop
答案 9 :(得分:2)
我也有这个确切的错误信息,对我来说,问题是通过添加“\”
来解决的事实证明,我的长字符串在最后分成了大约八行“\”,在一行中缺少“\”。
Python IDLE没有指定此错误所在的行号,但它突出显示了一个完全正确的变量赋值语句,让我失望。实际的畸形字符串语句(带有“\”的多行)与要突出显示的语句相邻。也许这会帮助别人。
答案 10 :(得分: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")
有效...
大卫
答案 11 :(得分:1)
您的variable(s1)
跨越多行。为了做到这一点(即您希望您的字符串跨越多行),您必须使用三引号(“”“)。
s1="""some very long
string............"""
答案 12 :(得分:1)
您可以尝试以下方法:
s = r'long\annoying\path'
答案 13 :(得分:1)
在这种情况下,三个单引号或三个双引号都可以使用! 例如:
"""Parameters:
...Type something.....
.....finishing statement"""
OR
'''Parameters:
...Type something.....
.....finishing statement'''
答案 14 :(得分:0)
以前的大多数答案都是正确的,我的答案与aaronasterling非常相似,您也可以做3个单引号 s1 ='''一些很长的字符串............'''
答案 15 :(得分:0)
答案 16 :(得分:0)
下面的所有代码均已使用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 \
............"