如何删除python中所有匹配的字符串

2024-10-06 16:20:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个问题,描述如下: 有一个字符串,我被要求删除所有匹配的子字符串。例如

s="asdf", sub_str=["as", "d"]

结果是"f"

s="aacc", sub_str=["ac"]

结果是""

s="abcf", sub_str=["ac", "b"]

结果是"f"

有人能帮我吗?非常感谢你!你知道吗


Tags: 字符串asacstrasdfaaccabcf
3条回答

使用正则表达式。你知道吗

演示:

import re

def removeString(sVal, sub_str):
    pat = re.compile("(" + "|".join(sub_str) + ")")
    m = pat.search(sVal)
    while m:
        sVal = re.sub(pat, "", sVal)
        m = pat.search(sVal)
    return sVal

#Testing....

s="asdf" 
sub_str=["as", "d"]
print(removeString(s, sub_str))

s="aacc" 
sub_str=["ac"]
print(removeString(s, sub_str))

s="abcf"
sub_str=["ac", "b"]
print(removeString(s, sub_str))

输出:

f

f

如果我理解正确,您需要删除sub_str字符串上的任何字符,最简单的方法是:

def remove(s, sub_str):
    result = s
    for ss in sub_str:
        for c in ss:
            result = result.replace(c, "")
    return result


s = "asdf"
sub_str = ["as", "d"]

print(remove(s, sub_str))

输出

f

使用re模块,假设您正在重复删除,直到没有发生更改:

s="asdf", sub_str=["as", "d"]
f1=re.sub('|'.join(sub_str),'',s)
f2=re.sub('|'.join(sub_str),'',f1)
while f1!=f2:
    f1=f2
    f2=re.sub('|'.join(sub_str),'',f1)
f=f2
print(f) #prints 'f'

相关问题 更多 >