【问题标题】:UnicodeDecodeError: Utf-8 Decode Error while parsing Midi FileUnicodeDecodeError:解析 Midi 文件时出现 Utf-8 解码错误
【发布时间】:2020-11-14 07:18:04
【问题描述】:

我尝试使用 music21 解析一些音乐文件,但代码生成 utf-8 错误:

'utf-8' codec can't decode byte 0xe9 in position 3: invalid continuation byte

这是我的代码:

notes = []
for file in glob.glob("midi_songs/*.mid"):
print("parsing %s"%file)
midi = converter.parse(file)

elements_to_parse = midi.flat.notes
for ele in elements_to_parse:
    #Note: Store Pitch
    if isinstance(ele, note.Note):
        notes.append(str(ele.pitch))


    #Chorde: Split note and join
    elif isinstance(ele, chord.Chord):
        notes.append("+".join(str(n) for n in ele.normalOrder))

追溯

---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-17-ca5986c7b6d6> in <module>
      2 for file in glob.glob("midi_songs/*.mid"):
      3     print("parsing %s"%file)
----> 4     midi = converter.parse(file)
      5 
      6     elements_to_parse = midi.flat.notes

【问题讨论】:

  • 你能检查一下你的代码的缩进吗?
  • 尝试将您的编码更改为 ISO-8859-1 之类的编码,因为它支持大多数符号和字符
  • 看起来像 music21 中的错误。

标签: python jupyter-notebook midi audio-player music21


【解决方案1】:

这是 music21 6.1.0 中的回归,已在 6.3.0 中修复

我们发现的每个有问题的文件在曲目名称消息中都有一个版权符号,并且由 www.piano-midi.de 编写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-29
    • 2017-11-08
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    相关资源
    最近更新 更多