如何使用re.split逗号和句点?

时间:2017-05-21 17:21:14

标签: python regex split

我有多个字符串,其中的单词用逗号或句号分隔:

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

我想根据逗号和句号拆分:

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

我只知道如何为re.split使用一个条件:

re.split(',',string)

这不会分裂有两个句号的词。如何分割整个字符串,以便在逗号或句点之间分割单词?

3 个答案:

答案 0 :(得分:2)

>>> 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']

但这不太通用,因为这两个字都不能用短语替换。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果您的字符串变量中包含许多元素,则可以使用chain.from_iterable模块中的itertools来处理您的列表

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']