根据唯一值列表拆分列表

时间:2019-09-10 21:49:46

标签: python

假设我有一个名为split_on_these的列表,我想使用text上的另一个列表。我先填充split_on_these,以免删除split_on_these条目的自然实例:

split_on_these = ['iv', 'x', 'v']
text = ["random iv text x hat v", "cat", "dog iv", "random cat x"]
padding = [" " + i + " " for i in split_on_these]

我正在尝试创建new_text,以便像这样对padding中包含的所有项目进行拆分:

["random", "text", "hat", "cat", "dog", "random cat"]

我尝试用padding之类的字符替换~中包含的所有文本条目,然后拆分该字符,但是问题是当您遍历文本中的条目时,有时是单词块,有时是单个字母。

请注意,应保留定界符之前的整个块(例如,随机猫)。

2 个答案:

答案 0 :(得分:2)

您已经通过填充分隔词来完成“大量拆分”。您剩下的是拆分和过滤序列

text = ["random iv text x hat v", "cat", "dog iv"]
[word for sent in text for word in sent.split() if word not in split_on_these]

这会将您填充的句子拆分为单个单词,并过滤掉不需要的单词。结果:

['random', 'text', 'hat', 'cat', 'dog']

答案 1 :(得分:1)

您可以使用Python的re library。它具有更强大的split功能,可让您在正则表达式上分割而不是单个字符。

您可以创建一个与您的任何填充字符串匹配的正则表达式,如下所示:

re.split("iv|x|v", text)

上述正则表达式并不完美-您还必须考虑何时/是否匹配每个填充序列周围的空格。