我有一个字符串:
s = "grocery store not liquor shop not restaurant, sell milk"
,我想在&#34之后删除第一个单词;不是"。我怎么能在python中实现它?我正在寻找结果:
"grocery store shop, sell milk"
或
"grocery store, sell milk"
如果删除'之间没有'并且字符串的任何标点符号/结尾也是可能的。
答案 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'))