想要使用Python从mp3文件中删除非法标签

时间:2010-11-26 09:07:31

标签: python regex string mp3

如何在我的mp3文件中实现这一点。

  

艺术家:www.xyz.com   ---->   艺术家:
艺术家:免费   下载,免费音乐,xyzhi.com   ---->艺术家:
  艺术家:Kurukuru Kan(Amma Na) -   www.musicxyx.com - ®Danaa   集合®   ---->艺术家:   Kurukuru Kan(Amma Na)
艺术家:   Nan Pogiren - - ®Dannacollections®   ---->艺术家:楠   Pogiren

我一直在使用Mutagen来访问ID3标签。如何操纵标签中的字符串来实现上述目的?

1 个答案:

答案 0 :(得分:0)

首先,您需要一个库来理解MP3格式并允许您编辑标签,可能是:http://id3-py.sourceforge.net/

除此之外,你只需要处理字符串替换。

对于你指定的那些(包括奇怪的空间要求):

#!/usr/bin/env python
# -*- coding: utf-8 -*-
EXPECTED = {
'Artist:www.xyz.com':'Artist:',
'Artist:free downloads,free music,xyzhi.com':'Artist:',
'Artist:Kurukuru Kan (Amma Na) - www.musicxyx.com - ® Danaa collections ®':'Artist: Kurukuru Kan (Amma Na)',
'Artist: Nan Pogiren - - ® Danna collections ®':'Artist:Nan Pogiren'}

import re

def process(instr):
    assert instr.startswith("Artist:")
    mo = re.match(r"^(Artist:)( ?)(.*?) - .*$",instr)
    if mo:
        spc = mo.group(2)
        if spc == " ":
            spc = ""
        else:
            spc = " "

        return "Artist:"+spc+mo.group(3)
    return "Artist:"

for (instr,outstr) in EXPECTED.iteritems():
    print process(instr),outstr,process(instr) == outstr
    assert process(instr) == outstr