Python从给定列表匹配字符串内的目标词并替换匹配项的实现问题
解决方法
方法1:直接遍历待排除列表批量替换
无需提前判断是否存在匹配词,str.replace()在目标词汇不存在时不会报错,逻辑最简洁:
given_list = ["Terms","I","want","to","remove","from","input_string"] input_string = input("Enter String:") # 逐个替换所有待排除词汇 for target in given_list: input_string = input_string.replace(target, "") print("Some Task", input_string) # 后续业务直接使用处理后的input_string即可
方法2:先获取所有匹配词汇再处理
如果需要留存匹配到的词汇做后续统计/校验,可以先筛选匹配项:
given_list = ["Terms","I","want","to","remove","from","input_string"] input_string = input("Enter String:") # 筛选所有命中的待排除词汇 matched = [word for word in given_list if word in input_string] if matched: # 可选:打印匹配到的词汇 print(f"检测到待删除词汇:{matched}") for word in matched: input_string = input_string.replace(word, "") print("Some Task", input_string) else: print("未检测到需要删除的词汇")
方法3:正则整词匹配(避免局部误匹配)
如果不需要替换词汇的局部出现(比如待删除词是to,不要把today里的to也删掉),可以用正则的单词边界做精确匹配:
import re given_list = ["Terms","I","want","to","remove","from","input_string"] input_string = input("Enter String:") # 构造正则规则,\b 代表单词边界,re.escape 避免特殊字符报错 pattern = re.compile(r'\b(' + '|'.join(re.escape(w) for w in given_list) + r')\b') res = pattern.sub("", input_string) print("Some Task", res)
内容的提问来源于stack exchange,提问作者ZXCVB0T
相关产品推荐
相关产品推荐

