gpt4 book ai didi

python - 一次替换多个正则表达式模式

转载 作者:行者123 更新时间:2023-12-04 10:03:47 25 4
gpt4 key购买 nike

我是 python 新手,我一直在寻找一种方法来替换一系列模式,但找不到使用正则表达式的方法,我发现其中没有一个对我有用,这是我的一些模式和我正在使用的代码:

regexes = {
r'\s(\(|\[)(.*?)Mix(.*?)(\)|\])/i' : r"",
r'\s(\(|\[)(.*?)Version(.*?)(\)|\])/i' : r"",
r'\s(\(|\[)(.*?)Remix(.*?)(\)|\])/i' : r"",
r'\s(\(|\[)(.*?)Extended(.*?)(\)|\])/i' : r"",
r'\s\(remix\)/i' : r"",
r'\s\(original\)/i' : r"",
r'\s\(intro\)/i' : r"",
}

def multi_replace(dict, text):
for key, value in dict.items():
text = re.sub(key, value, text)
return text

filename = "Testing (Intro)"

name = multi_replace(regexes, filename)

print(name)

因为我是 DJ,所以我从我拥有的音乐目录中提取文件名,我属于许多唱片池,他们有时会如下标记他们的歌曲;

SomeGuy - 歌曲名称在这里(介绍)

SomeGirl - 歌曲名称在此 (Remix)

SomeGirl - 歌曲名称在这里(扩展版)

SomeGuy - 歌曲名称在这里(12 英寸混音)

等等...

我上面的正则表达式在 PHP 中工作,它将删除所有值,如 (Intro) (Remix) (Extended Version) 等,所以输出是;

SomeGuy - 歌曲名称在这里

SomeGirl - 歌曲名称在这里

SomeGirl - 歌曲名称在这里

SomeGuy - 歌曲名称在这里

等等...

最佳答案

对于 ignorecase 你需要使用 re.Ire.IGNORECASE
尝试使用此代码:

import re

regexes = {
r'\s(\(|\[)(.*?)Mix(.*?)(\)|\])' : r"",
r'\s(\(|\[)(.*?)Version(.*?)(\)|\])' : r"",
r'\s(\(|\[)(.*?)Remix(.*?)(\)|\])' : r"",
r'\s(\(|\[)(.*?)Extended(.*?)(\)|\])' : r"",
r'\s\(remix\)' : r"",
r'\s\(original\)' : r"",
r'\s\(intro\)' : r"",
}

def multi_replace(dict, text):
for key, value in dict.items():
p = re.compile(key, re.I)
text = p.sub(value, text)
return text

filename = "Testing (Intro)"

name = multi_replace(regexes, filename)

print(name)

关于python - 一次替换多个正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61691674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com