假设我有一个名为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
之类的字符替换~
中包含的所有文本条目,然后拆分该字符,但是问题是当您遍历文本中的条目时,有时是单词块,有时是单个字母。
请注意,应保留定界符之前的整个块(例如,随机猫)。
答案 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)
上述正则表达式并不完美-您还必须考虑何时/是否匹配每个填充序列周围的空格。