我試圖從大量文件中自動提取數據,並且它在大多數情況下都能正常工作。當它遇到非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