Python - Как удалить остаток строки после определенного слова / символа
Я полный noob Python, поэтому, пожалуйста, успокойся.
В настоящее время я занимаюсь хакингом / редактированием плагина kodi, называемого псевдо-библиотекой, чтобы он очищал названия потоков, которые я собираю, чтобы я мог поместить его в более привлекательный EPG.
В настоящее время они выглядят так:
[ЦВЕТ белый]3E (Сейчас - 07 - 30 Это шоу 70-х) - .strm
Я идентифицировал код, который производит это здесь:
FleName = (title + ' - ' + eptitle + '.strm').replace(":"," - ")
FleName = re.sub('[\/:*?<>|!@#$/:]', '', FleName)
и отредактировал следующим образом (грязный, я знаю, и я уверен, что есть намного лучший способ, как я уже говорил выше, я нуб!)
FleName = (title + '.strm').replace(":"," - ").replace("[COLOR white]","").replace("[COLOR blue]","")
FleName = re.sub('[\/:*?<>|!@#$/:]', '', FleName)
Это тогда изменяет вышеупомянутый заголовок на:
3E (сейчас - 07 - 30 Это шоу 70-х).strm
Что я действительно хочу, чтобы вывод был:
3E.strm
Ближайший ответ, который я могу найти для моей проблемы, здесь:
/questions/32214352/udalit-tekst-mezhdu-i-v-python/32214359#32214359
Однако у меня также есть скобки в скобках, чтобы удалить, и выше не решает, что, например,
Zee Cinema (сейчас - 19 - 15 Baazigar (1993)). Strm
Я посмотрел на полосу, чтобы удалить все символы после и включая "(Сейчас", но не могу разобраться. Пожалуйста, кто-нибудь может предоставить универсальное решение моей проблемы выше, чтобы определить, является ли заголовок
[ЦВЕТ белый]3E (сейчас - 07 - 30, это шоу 70-х) - .strm ИЛИ
[ЦВЕТ белого]Zee Cinema (сейчас - 19 - 15 Baazigar (1993)). Strm
что он выводит только заголовок и.strm. Итак, в приведенных выше примерах:
3E.strm
Zee Cinema.strm
Большое спасибо за поиск и, надеюсь, помочь мне решить мою проблему.
3 ответа
Таким образом, вы по сути у вас есть что-то в форме [something]text you want (something else).strm
? Самый простой способ решить эту проблему - просто игнорировать все после открытия (
и до продления:
re.sub(r"^[^\]]+\]([^(]+) \(.*\.strm$",r"\1.strm",FleName)
Однако следует помнить о режимах отказа. Это не удастся для неправильно отформатированных имен файлов, не изменяя их вообще в большинстве случаев. Крейг потерпит неудачу с исключением в большинстве случаев. Вполне возможно, что можно было бы принять более сложное решение, чтобы вызвать исключение для более широкого диапазона неправильно отформатированных имен файлов, но ни одно из этих решений не делает.
Основываясь на шаблоне оригинальных заголовков, кажется, что вам нужно получить текст между первой парой '](', убрать пробел и добавить расширение. Вот пример:
originalFileName = "[COLOR white]3E (Now - 07 - 30 That '70s Show) - .strm"
fileName, fileExt = originalFileName.split(".")
newFileName = ".".join([re.search("\](.*?)\(", fileName).groups()[0].strip(), fileExt])