#python
#python
Вопрос:
У меня есть файлы с именами, подобными приведенным ниже, и мне нужно изменить их на формат правой стороны.
CK-123443-1.dft - CK-123443.dft
CK-123344-A.dft - CK-123344.dft
123322-B.dft - 123322.dft
Я пытался использовать split(‘-‘), но это работает не для всех файлов, потому что некоторые файлы имеют два hipen, а некоторые — один. могу ли я получить какое-либо другое решение этой проблемы?
Мой код с re: я не уверен в повторном выражении
import re
new = re.sub('-', '.', old)
Комментарии:
1. опубликуйте код, который вы пробовали
2. почему бы вам не попробовать команду mv вместе с шаблоном *.dft?
Ответ №1:
Если вы уверены, что каждое имя файла в каталоге имеет дефис, который необходимо удалить, вы можете разделить на дефисы и исключить только последнюю разделяемую часть.
Итак, что-то вроде этого:
name, ext = file_name.split('.') # Get the 'dft' part aside
new_name = ''.join(name.split('-')[:-1]) f'.{ext}'
Комментарии:
1. вы можете использовать
rsplit()
Ответ №2:
РЕШЕНИЕ:
import re
#assuming that your file is called file_name
new_name = re.sub('-[A-Za-z0-9].', '.', file_name)
#this replaces the characters after the last hyphen and before the extension.
Я думаю, вы можете легко сделать это с помощью регулярных выражений — прежде чем я скажу вам, какой шаблон следует использовать, мне нужно больше ясности в том, как вы хотите изменить имя — вы хотите сохранить все начальные символы алфавита и удалить все конечные символы после дефиса и перед расширением?
Комментарии:
1. Мне ничего не нужно после последнего hipen, и мне нужно сохранить то же расширение файла
2. Мне нужны все ведущие символы до последнего hipen и расширение файла