2017-05-21 59 views
0

我有多個字符串,其中單詞拆分用逗號或句號:如何使用逗號和句點的re.split?

string = ['apple,pear,grapes,carrot.cabbage,veggies.fruit,yard'] 

我想拆分此基礎上逗號和句號:

string = ['apple','pear','grapes','carrot','cabbage','veggies','fruit','yard'] 

我只知道如何使用一個條件re.split:

re.split(',',string) 

這將不會拆分有句點的單詞。如何分割整個字符串,以便在中間有逗號或句點時分詞?使用變更操作者|

+1

分割參數是一個正則表達式;使用'r「[。,]」' – jtbandes

回答

1
>>> import re 
>>> string = 'apple,pear,grapes,carrot.cabbage,veggies.fruit,yard' 
>>> re.split(',|\.',string) 
['apple', 'pear', 'grapes', 'carrot', 'cabbage', 'veggies', 'fruit', 'yard'] 

此分割在任,.(其必須被轉義爲\.)。

它也可以用一個字符類寫成:

>>> re.split('[,.]',string) 
['apple', 'pear', 'grapes', 'carrot', 'cabbage', 'veggies', 'fruit', 'yard'] 

但這是不太一般既不角色可以用一個短語來代替。

+0

您也可以使用字符類 –

+0

在_ [,。] _中,您不必轉義點。對於單字符選擇方括號是首選選項 – volcano

0
import re 
string = 'apple,pear,grapes,carrot.cabbage,veggies.fruit,yard' 
arr = re.split('[,.]', string) 
print(arr) 
+0

您不需要在字符類中跳過句號 –

+0

您是對的,我已經修復了它。 – user3429660

0

您可以依次使用chain.from_iterableitertools模塊來處理您的列表,如果你有很多元素在你的字符串變量

from itertools import chain 

string = ['apple,pear,grapes,carrot.cabbage,veggies.fruit,yard'] 
final = list(chain.from_iterable(re.split(',', k) for k in string)) 
print(final) 

輸出:

['apple', 'pear', 'grapes', 'carrot.cabbage', 'veggies.fruit', 'yard'] 

,你可以改變只有re.split()內部的模式分爲',''.'

from itertools import chain 

string = ['apple,pear,grapes,carrot.cabbage,veggies.fruit,yard'] 
final = list(chain.from_iterable(re.split('[,.]', k) for k in string)) 
print(final) 

輸出:

['apple', 'pear', 'grapes', 'carrot', 'cabbage', 'veggies', 'fruit', 'yard'] 
相關問題