Python - 如何删除特定 word/character 后的剩余字符串

Python - How to delete rest of string after a specific word/character

我是个十足的python菜鸟,所以请放轻松。

我目前正在 hacking/editing 一个名为伪库的 kodi 插件,以便它清理我正在抓取的流的标题,以便我可以将其放入更好看的 EPG 中。

目前它们看起来像这样:

[COLOR white]3E (Now - 07 - 30 That '70s Show) - .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 (Now - 07 - 30 That '70s Show).strm

我真正想要的输出是:

3E.strm

我能找到的最接近我的问题的答案在这里:

但是我也有括号内的括号要删除,上面没有解决这个问题,例如

Zee Cinema (Now - 19 - 15 Baazigar (1993)).strm

我查看了 strip 以删除包括“(Now”在内的所有字符,但无法完全解决。请有人为我的上述问题提供通用解决方案,以便标题是否

[COLOR white]3E (Now - 07 - 30 That '70s Show) - .strm OR

[COLOR white]Zee Cinema (Now - 19 - 15 Baazigar (1993)).strm

它只输出标题和 .strm。所以在上面的例子中:

3E.strm
Zee Cinema.strm

非常感谢您寻找并希望帮助我解决问题。

FileName.split(']')[1].split('(')[0].strip() + ".strm"

所以你本质上是 [something]text you want (something else).strm 形式的东西?解决此问题的最简单方法是忽略开头 ( 之后和扩展之前的所有内容:

re.sub(r"^[^\]]+\]([^(]+) \(.*\.strm$",r".strm",FleName)

但是,请注意故障模式。对于格式不正确的文件名,这将失败,因为在大多数情况下根本不更改它们。在大多数情况下,Craig's 会失败并出现异常。可能会制定更复杂的解决方案来针对范围更广的格式不正确的文件名引发异常,但这些解决方案都没有。

根据原始标题的模式,您似乎需要获取第一个 '](' 对之间的文本,去除空格并附加扩展名。这是一个示例:

originalFileName = "[COLOR white]3E (Now - 07 - 30 That '70s Show) - .strm"
fileName, fileExt = originalFileName.split(".")
newFileName = ".".join([re.search("\](.*?)\(", fileName).groups()[0].strip(), fileExt])