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
@ Robᵩ - см. Обновленный вопрос
Вы не против import re и используете регулярные выражения?
Не совсем понятно, что вы хотите здесь сделать. Вы просто пытаетесь удалить символ перед указанной подстрокой? Вы пытаетесь удалить все конечные буквы перед удаленной подстрокой? Или вы пытаетесь соответствовать какой-то другой спецификации?
Кроме того: вы можете заменить существующую функцию на return str.replace(substr, '').
Почему не использовали index-1 вот так? str = str[0:index-1] + str[index+length:]






Regex может решить эту проблему довольно легко
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'
Думаю, он тоже хочет потерять д ... re.sub(r'._bf3dac','','ABC_Y6N02.20.0025D_BF3DAC.tgz.bin', flags=re.IGNORECASE)
Обновлено: чтобы отбросить конец строки, начиная с символа перед подчеркиванием, но с сохранением расширения вы можете использовать регулярное выражение:
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
Итак, вы хотите отбросить конец строки, начиная с символа перед подчеркиванием, но с сохранением расширения?
В чем конкретно заключается ваш вопрос?