2010-08-24 81 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。