从python中的字符串中删除子字符串

时间:2018-04-13 03:19:37

标签: python regex

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

2 个答案:

答案 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'