Python诱变剂未正确保存

Posted

技术标签:

【中文标题】Python诱变剂未正确保存【英文标题】:Python mutagen not saving correctly 【发布时间】:2012-06-07 18:27:40 【问题描述】:

我正在从 Excel 文档中提取文本并将它们作为 id3 标记添加到一些 mp3 文件中。我的 Excel 文档中的大多数字符都是俄语 (Unicode),但有些是英语。当我运行脚本时,所有英文标签都被正确地写入元数据,但所有俄语字符都显示为问号。如果我在控制台中打印俄语字符,它们会完美显示。为什么它们被写成问号?

Python

from mutagen.easyid3 import EasyID3
import xlrd
import glob
import re
import os
for name in glob.glob('*.mp3'):
  audio = EasyID3(name)
  wb = xlrd.open_workbook('xl.xls')
  sh = wb.sheet_by_name(u'Russian')
  col_b = 1
  col_c = 2
  col_e = 4
  col_g = 6
  col_i = 8
  col_k = 10
  for i in range(sh.nrows):
    row = sh.row_values(i)
    for j in range(len(row)):
      if row[j] == name:
        audio["title"] = sh.cell(i,col_e).value
        audio["author"] = sh.cell(i,col_i).value
        audio["copyright"] = sh.cell(i,col_g).value
        audio["album"] = sh.cell(i,col_k).value
        audio["discsubtitle"] = sh.cell(i,col_c).value
        audio.save()
print "All MP3 MetaData Parsed!"

【问题讨论】:

虽然与您当前遇到的 Unicode 问题无关,但您正在为文件夹中的每个 MP3 遍历整个 Excel 工作簿,并考虑到您之间存在直接匹配的事实您的列和文件名我只会遍历 Excel 工作簿,并根据工作簿中的文件名检查文件是否存在。 你确定你运行脚本后用来读取标签的程序可以处理unicode吗? 我只是将 mp3 文件移动到 Windows 机器上,并尝试在“属性”下的“详细信息”中查看标签 我认为这可能是因为该软件包使用的是 ID3v1 而不是 ID3v2(据我所知 ID3v1 不支持扩展字符集/编码/其他),但查看 @987654321 的源代码@ 和它包装的模块 mutagen.id3,似乎 EasyID3 类旨在正确编码 ASCII 范围之外的字符。所以我不确定你的问题是什么,除非错误在于xlrd 处理非ASCII字符的方式。 如果我在控制台打印让我们说“sh.cell(i,col_e).value”的值,俄语字符都会正常显示。我什至试图给 "audio["title"]" 一个字面值 "КАК ВСЕ НАЧИНАЛОСЬ ",我得到了这个错误:SyntaxError: Non-ASCII character '\xd0' in file mp3.py on line 21, but no encoding declared 然后我在我的脚本顶部包含了# -*- coding: utf-8 -*-,同样的错误。 【参考方案1】:

您应该使用“解码”或/和“编码”方法。

关于:https://***.com/a/370199/1321404的最佳答案

另一种方式:https://***.com/a/4631545/1321404

【讨论】:

以上是关于Python诱变剂未正确保存的主要内容,如果未能解决你的问题,请参考以下文章

画布中的图像未正确保存

readLine() 未正确保存

Swift NSCache 结构未正确保存

核心数据一对多关系未正确/按预期保存

MongooseJS 未正确保存到数组

CoreData 中的 NSData 未正确保存