删除"之后的第一个单词不"

时间:2016-12-23 17:06:58

标签: python regex

我有一个字符串:

s = "grocery store not liquor shop not restaurant, sell milk"

,我想在&#34之后删除第一个单词;不是"。我怎么能在python中实现它?我正在寻找结果:

"grocery store shop, sell milk"

"grocery store, sell milk"

如果删除'之间没有'并且字符串的任何标点符号/结尾也是可能的。

3 个答案:

答案 0 :(得分:3)

您可以这样做:

import re
s = "grocery store not liquor shop not restaurant, sell milk"

print (re.sub(r'\s+not \w+', '', s))

你会得到这个:

grocery store shop, sell milk

答案 1 :(得分:1)

如果您要删除下一个标点符号或行尾的字符,请尝试以下操作:

s = "grocery store not liquor shop not restaurant, sell milk"
re.sub(r'\b\s*not\s+[\w\s]+', '', s)

结果

'grocery store, sell milk'

基本上,删除任何以“not”开头的字符串,后跟空格,后跟所有可用的非(字或空格)字符,即标点符号。如果您想删除尾随逗号,请尝试以下修改:

s = "grocery store not liquor shop not restaurant, sell milk"
re.sub(r'\b\s*not\s+[\w\s]+[^\w\s]?', '', s)

尾随?可确保匹配行尾和实际标点符号。

这些表达式适用于

等极端情况
not milk

答案 2 :(得分:0)

如果您不想使用re,则可以始终使用循环。

def remove_after(string, kwrd):
    s = string.split(' ')
    new = []
    skip = []
    for i,v in enumerate(s):
        if v != kwrd:
            if i not in skip:
                new.append(v)
        else:
            skip.append(i+1)
    return ' '.join(new)

print(remove_after("grocery store not liquor shop not restaurant, sell milk", 'not'))