Python 为什么我无法显示USLT歌词

Python 为什么我无法显示USLT歌词,python,python-2.7,mutagen,Python,Python 2.7,Mutagen,我用诱变剂在我的媒体上寻找歌词。当我运行以下命令时 import mutagen.mp3 mp3 = MP3(mp3file) print mp3.pprint() 我可以看到框架USLT存在,它包含: USLT=[不可表示的数据] 我不明白为什么这些数据不具有代表性。我已将标签插入mp3文件,如下所示: tags = ID3(mp3file) tags[u"USLT::'eng'"] = (USLT(encoding=3, lang=u'eng', desc=u'desc', text="

我用诱变剂在我的媒体上寻找歌词。当我运行以下命令时

import mutagen.mp3

mp3 = MP3(mp3file)
print mp3.pprint()
我可以看到框架USLT存在,它包含:

USLT=[不可表示的数据]

我不明白为什么这些数据不具有代表性。我已将标签插入mp3文件,如下所示:

tags = ID3(mp3file)
tags[u"USLT::'eng'"] = (USLT(encoding=3, lang=u'eng', desc=u'desc', text="this is a test"))
tags.save()
我真的不明白为什么我需要声明标记为u“USLT::'eng'”],而不是单独使用“USLT”,但我可以确认这是有效的,因为我可以看到标记出现在mp3tag(用于修改mp3标记的软件)中

因此标签存在,带有歌词。我可以在mp3.pprint()和mp3tag中看到这一点,但我无法使用以下代码查看它:

ulyrics = mp3["USLT"]
print ulyrics
我试过把“USLT”改成u“USLT::‘eng’”,但没有什么不同。 我经常看到错误消息:

文件“filepath\诱变剂_util.py”,第206行,在getitem 返回自我。\u dict[键] KeyError:“USLT”


但我无法判断这是否是诱变剂或我的代码中的错误(因为我可以看到我需要的所有其他标签的结果)

此时,对我有效的是:

from mutagen.id3 import ID3

mp3file = "... path to mp3 file ..."

tags = ID3(mp3file)
ulyrics = tags.getall('USLT')[0]

# change the lyrics text
ulyrics.text = " An arbitrary new lyrics text..."
tags.setall('USLT', [ulyrics])

# change the lyrics object completely
ulyrics = USLT(encoding=3, lang=u'eng', desc=u'desc', text="this is a test")
tags.setall('USLT', [ulyrics])

需要注意的是,由于
USLT
对象中包含了
lang
,因此无需使用键
“USLT::'eng'”

太糟糕了,OP无法接受上次访问后发布的答案。