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

时间:2019-01-03 13:44:11

标签: python algorithm

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

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

结果是"f"

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

结果是""

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

结果是"f"

有人可以帮助我吗?非常感谢你!

4 个答案:

答案 0 :(得分:1)

使用正则表达式。

演示:

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

答案 1 :(得分:0)

for sub_element in sub_str:
    for sub_char in sub_element:
        s = s.replace(sub_char, '')

答案 2 :(得分:0)

如果我正确理解,您需要删除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

答案 3 :(得分:0)

使用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'