在列表中找到单词,然后删除该单词和该列中的所有其他尾随单词

时间:2018-07-13 07:47:24

标签: python string pandas

如何找到列表中的单词并删除找到的单词后的其他单词?

例如:

remove_words = ['stack', 'over', 'flow']

输入:

0    abc test test stack yxz
1    cde test12 over ste
2    def123 flow test123
3    yup over 4562

想从pandas数据框列的列表remove_words列表中找到单词,然后删除这些单词以及之后的所有单词。

结果:

0    abc test test
1    cde test12 
2    def123
3    yup

4 个答案:

答案 0 :(得分:2)

split|的所有联接值一起用于正则表达式OR,并选择list的前str[0]个:

remove_words = ['stack', 'over', 'flow']

#for more general solution with word boundary
pat = r'\b{}\b'.format('|'.join(remove_words))
df['col'] = df['col'].str.split(pat, n=1).str[0]
print (df)
              col
0  abc test test 
1     cde test12 
2         def123 
3            yup 

答案 1 :(得分:0)

第一步是检查输入中是否有值,如果没有,则可以返回整个输入

if "stack" or "over" or "flow" not in input: 
    return input

现在是移除部分。我认为最好的方法是遍历输入数组中的每个值(我假设它是一个数组)并调用str_replace

答案 2 :(得分:0)

我还没有用pandas数据框编写数据,但是音乐会在任何语言中都应该是相同的,只是循环遍历所有单词并使用带有空字符串的replace方法。

答案 3 :(得分:0)

remove_words = ['stack', 'over', 'flow']
inputline = "abc test test stack yxz"
for word in inputline.split(" "):
    if word in remove_words:
       print(inputline[:test.index(word)])

这会将输入的字符串拆分为一个列表,然后在remove_words列表中找到任何单词的索引,并将列表的其余部分切掉。只需要做一个循环来替换整个数据集的硬核字符串即可。