2012-07-16 27 views
0

我試圖剪斷前半句中導入的字符串(S)總是採取的形式查找反斜槓多個單詞的Python:</p> <p><code>"first phrase\... ... "</code></p> <p>前半句可以是任何長度,包括:進口串

我最初嘗試的代碼是:

phrase = s[1:s.find('\',1,len(s))] 

這顯然沒有奏效。

r'\'將不會編譯(返回EOL錯誤)。

以下幾點的變化:r'\\\'; r'\\\\\\\', "\\\", "\\\\\\\""
解析爲:phrase = s[1:-1]

作爲第一個字符始終是一個反斜槓我也試過:

phrase = s[1:find(s[0:1],1,len(s))], but it wasn't having any of it. 

任何建議表示讚賞,這應該是一個10分鐘的工作!

+0

作爲一個附註:'s.find(x,1,len(s))'是不必要的;你可以做's.find(x,1)'。但是,正如Prashant所說,拆分通常更簡單,更清晰。沒有人與你的問題有任何關係。 – abarnert 2012-07-17 00:59:42

+0

另外,如果你用s =「\ first phrase \ ... \ ...」來測試這個,那麼s的第一個字符是一個換頁符,而不是一個反斜槓,這可能解釋你爲什麼要這麼多問題。 – abarnert 2012-07-17 01:00:44

回答

6

字符串文字中的反斜槓需要轉義。

'\\' 
+0

+1。如果您將OP的代碼更改爲一個字符以避免反斜槓,則「phrase」最終會按照「第一個語句」完全按照要求提供。 (但是,我懷疑他可能在測試它時遇到問題,因爲他正在做's =「\第一個短語\ ... \ ...」,當然這實際上並不以反斜槓開始。) – abarnert 2012-07-17 00:57:43

4

我只是用拆分命令,這將會很容易地處理你的多字要求:

>>> s='\\first phrase\\second phrase\\third phrase\\' 
>>> print s 
\first phrase\second phrase\third phrase\ 

>>> s.split('\\') 
['', 'first phrase', 'second phrase', 'third phrase', ''] 

>>> s.split('\\')[1] 
'first phrase' 

關鍵是要確保反斜槓由反斜線。
這就是爲什麼它是你正在尋找或拆分的\\

+0

不是直接的回答OP的問題,但這是他嘗試做什麼的更加Pythonic的方式。 – abarnert 2012-07-17 00:58:04

+0

謝謝你!那就是訣竅。 – user1530213 2012-07-19 14:56:55

+0

請務必接受解決您的問題的答案:) – 2012-07-19 15:02:03

1

作爲字符串的最後一個字符,即使它是一個原始字符串,也不能有'\' - 它需要寫入'\\' - 事實上,如果你看看你的問題,你會看到突出顯示有點過分 - 嘗試按建議更改它,並且它可能很好地糾正它自己...

相關問題