使用eyeD3从Python中的mp3文件检索歌词

使用eyeD3从Python中的mp3文件检索歌词,python,mp3,mutagen,eyed3,Python,Mp3,Mutagen,Eyed3,我目前正在尝试使用Python及其eyeD3库从mp3文件中提取歌词。歌词已经嵌入到mp3文件中(通过:MusicBee)。我正在尝试使用eyeD3返回歌词。我不知道怎么做。我在网上进行了广泛的搜索,找到的都是如何设置歌词的教程。我只想从文件里读出来。以下是我当前的代码: track = eyed3.load(path) tag = track.tag artist = tag.artist lyrics = tag.lyrics 艺术家正确返回艺术家的姓名,但歌词返回以下内容: <ey

我目前正在尝试使用Python及其eyeD3库从mp3文件中提取歌词。歌词已经嵌入到mp3文件中(通过:MusicBee)。我正在尝试使用eyeD3返回歌词。我不知道怎么做。我在网上进行了广泛的搜索,找到的都是如何设置歌词的教程。我只想从文件里读出来。以下是我当前的代码:

track = eyed3.load(path)
tag = track.tag
artist = tag.artist
lyrics = tag.lyrics
艺术家正确返回艺术家的姓名,但歌词返回以下内容:

<eyed3.id3.tag.LyricsAccessor object at 0x27402d0>

我如何才能返回嵌入mp3的原始文本歌词?这可能吗


非常感谢高级版。

它看起来像是一个迭代器。试一试

tag.lyrics[0]

最后,打印对象目录并查找有用的函数

print dir(tag.lyrics)

DonJuma,Python告诉你:

<iterator object at hex_location> 
用户:mindu解释说,您可以编写一个健壮的函数来检查

try:
    some_object_iterator = iter(some_object)
except TypeError, te:
    print some_object, 'is not iterable'
但是!!! 这不是蟒蛇式的。Python相信这一点,它基本上是这样说的:“如果它看起来像鸭子,嘎嘎叫起来像鸭子,那么它一定是鸭子。”有关更多信息,请参阅链接。

这对我很有用:

u"".join([i.text for i in tag.lyrics])
tag.lyrics[0].text

非常感谢你。我被困在这个问题上好几个小时了。你帮了我这么多。只是出于好奇,你怎么知道它是一个迭代器?我阅读了Eyed3ID3的源代码。我发现缺少文档,所以我说了实话。@DonJuma歌词属性是复数形式。所以里面一定有很多元素。你能为你的解决方案添加一些注释吗?
u"".join([i.text for i in tag.lyrics])
tag.lyrics[0].text