2015-09-27 41 views
0

,比如我有串:蟒蛇2.7 - 如何把字符串轉換成一個列表時,分隔符是數字和「\ N」

​​

我想要得到的是:

["hello", "there", "how", "are", "you", "today?"] 

數字代表空格,而\\n是一個新行。 我試過split()這樣做,但它只能得到2個論證,而不是更多,所以它不是optinal。

我也發現了這一點:

filter(None, re.split("['1234567890']+", string_to_split)) 

這對於數字工作正常,但不是爲'\\n'。 有沒有什麼辦法在一個動作中將數字和'\\n'拆分爲字符串?

我不能找出一種方法將它分成兩個分離的函數,因爲一旦我創建了一個列表,我不能再分割它。

如果有人知道這樣做的方式,請幫助我。感謝

+1

只需將空格('\ s')添加到您的正則表達式中(並注意數字只是'\ d')。 – jonrsharpe

+0

這是一個原始字符串還是普通字符串?這會導致'\\ n'或'\ n'。兩者都是一個或兩個'\'和'n',而不是換行符。 –

+0

@jonrsharpe我不會再工作。 – Kasramvd

回答

1

您需要添加\s\\n到您的正則表達式:

>>> s="hello0there\\nhow3are6you1today?" 
>>> re.split(r'[\d\s\\n]*',s) 
['hello', 'there', 'how', 'are', 'you', 'today?'] 

爲了得到分裂騎在你的字符串n的你可以用正面看後面和邏輯或:

>>> re.split(r'[\d\s\\]|(?<=\\)n',s) 

但是,既然它可能會產生一個空字符串,你可以使用列表理解來獲取它。

>>> [i for i in re.split(r'[\d\s\\]|(?<=\\)n',s) if i] 
+2

你需要更多的反斜槓(或'r''')! – jonrsharpe

+0

@jonrsharpe是的,謝謝;) – Kasramvd

+0

有沒有一種方法可以只用'\ n'分開(不是由一個'n'?因爲我在包含字母n的單詞列表上運行該單詞,並且它也分裂了單詞.. @jonrsharpe – Maya

相關問題