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诱变剂未正确保存的主要内容,如果未能解决你的问题,请参考以下文章