2010-08-24 56 views

回答

107

在行结束之前您没有放置"

如果你想这样做

使用"""

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

小心只使用三个引号,我有四个意外,并出现错误 – Oregano 2014-12-09 23:13:50

+0

连接字符串和变量呢? – 2016-09-12 18:16:55

12

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

多久这个字符串是真的吗?

我怀疑有从文件或命令行读取一行多久可以是一个限制,因为该行的末尾被choped关闭解析器看到类似s1="some very long string..........(没有结束"),从而抛出解析错误?

您可以通过在源逃脱换行符这样了多线较长的行拆分:

​​
50

我有这个问题 - 我终于摸索出的原因是我已经包含在\字符字符串。如果你有任何这些,用\\“逃脱”它们,它应该工作正常。

+4

这个问题经常发生。此外,这取决于您正在开发的平台操作系统。对于Windows和Unix,斜杠和反斜杠是不同的 – 2013-11-21 18:10:02

+0

哇没有看到这个将要发生的事情,那么在python的字符串中有\然后 – Leo 2014-12-05 13:48:25

+0

对于斜杠vs反斜杠问题,你可以使用os.name来确定你正在运行的操作系统该代码然后使用if语句来设置适当的字符。 – jmdeamer 2016-07-27 22:39:18

1

我也有这个确切的错误消息,对我来说,问题解决了通过添加“\”

事实证明,我的长字符串,在最后分解为以“\”约八线,在一行中缺少一个“\”。

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

2

我也有这个问题,但这里有答案,我想很重要的一点这个 /后不应该有空洞spaces.Be意识到这一点

3

在我的情况,我有\r\n在我的单引号字典字符串。我将\r的所有实例替换为\\r\n\\n,它解决了我的问题,正确地返回了eval字典中的转义换行符。

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

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

错误:C:\Users\

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

0

就我而言,我使用的是Windows,所以我必须用双引号,而不是单一的。

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

我在postgresql函数中出现这个错误。我有一个很长的SQL,为了更好的可读性,我把它分成多行。但是,这是问题所在。我删除了所有,并在一行中解决这个问题。我正在使用pgadmin III。