我试图从大量文件中自动提取数据,并且它在大多数情况下都能正常工作。当它遇到非ASCII字符时,它就会崩溃:用Python中的unicode挣扎
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 5: ordinal not in range(128)
如何将我的品牌设置为UTF-8?我的代码正在从别的东西(这是使用lxml)重新调整用途,并没有任何问题。我见过很多关于编码/解码的讨论,但我不明白我应该如何实现它。下面的代码被删减到相关的代码 - 我已经删除了其余的代码。
i = 0
filenames = [y for x in os.walk("Distributor") for y in glob(os.path.join(x[0], '*.xml'))]
for i in range (len(filenames)):
pathname = filenames[i]
fin = open(pathname, 'r')
with codecs.open(('Assets'+'.log'), mode='w', encoding='utf-8') as f:
f.write(u'File Path|Brand\n')
lines = fin.read()
brand_start = lines.find("Brand Title")
brand_end = lines.find("/>",brand_start)
brand = lines [brand_start+47:brand_end-2]
f.write(u'{}|{}\n'.format(pathname[4:35],brand))
flog.close()
我敢肯定有一个更好的方式来写了整个事情,但此刻我的重点就是要弄明白如何获得线/读取功能,使用UTF-8的工作。
您应该显示完整的错误,包括回溯。除了别的,它说错误发生在哪一行。 –
http://nedbatchelder.com/text/unipain.html – tripleee