import string
def remove_all(substr, str):
index = 0
length = len(substr)
while string.find(str, substr) != -1:
index = string.find(str, substr)
str = str[0:index] + str[index+length:]
return str
s = "ABC_Y6N02.20.0025D_BF3DAC.tgz.bin"
print(s)
s = remove_all(r'_bf3dac',s.lower())
print(s)
该程序的输出是
ABC_Y6N02.20.0025D_BF3DAC.tgz.bin
abc_y6n02.20.0025d.tgz.bin
我也希望从d
中删除0025d
。或者基本上我想删除.tgz.bin
之前的最后一个字母,我该怎么做?
基本上我想要输出
abc_y6n02.20.0025.tgz.bin
代替
abc_y6n02.20.0025d.tgz.bin
答案 0 :(得分:1)
编辑:从下划线前的字符开始删除字符串的结尾,但是保留扩展名可以使用正则表达式:
import re
s = "ABC_Y6N02.20.0025D_BF3DAC.tgz.bin"
print( re.sub(r"^(.*)[^_]_[^\.]*(\.tgz\.bin)$", r"\1\2",s ).lower())
返回
abc_y6n02.20.0025.tgz.bin
答案 1 :(得分:0)
正则表达式可以很容易地解决这个问题
import re
s = "ABC_Y6N02.20.0025D_BF3DAC.tgz.bin"
re.sub(r"\w_bf3dac", "", s, flags=re.IGNORECASE)
将输出
'ABC_Y6N02.20.0025.tgz.bin'