我有问题,这里是描述: 有一个字符串,要求我删除所有匹配的子字符串。例如,
s="asdf", sub_str=["as", "d"]
结果是"f"
s="aacc", sub_str=["ac"]
结果是""
s="abcf", sub_str=["ac", "b"]
结果是"f"
有人可以帮助我吗?非常感谢你!
答案 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'