簡體   English   中英

UnicodeDecodeError:保存到python文件中

[英]UnicodeDecodeError: save to file in python

我想讀取文件,在其中找到某些內容並保存結果,但是當我要保存文件時,它給我一個錯誤
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 19: ordinal not in range(128)

保存到文件的代碼:
fileout.write((key + ';' + nameDict[key]+ ';'+src + alt +'\\n').decode('utf-8'))

我該如何解決?
謝謝

您試圖將unicode值與字節字符串連接起來,然后將結果轉換為unicode,以將其寫入最有可能僅使用字節字符串的文件對象中。

不要像這樣混合unicode和字節字符串

使用io.open()打開要寫入的文件以自動編碼Unicode值,然后處理代碼中的unicode:

import io

with io.open(filename, 'w', encoding='utf8') as fileout:
    # code gathering stuff from BeautifulSoup

    fileout.write(u'{};{};{}{}\n'.format(key, nameDict[key], src, alt)

您可能需要檢出csv模塊以處理寫出以定界符分隔的值。 如果您遵循這種方法,則必須對列進行顯式編碼:

import csv

with open(filename, 'wb') as fileout:
    writer = csv.writer(fileout, delimiter=';')
    # code gathering stuff from BeautifulSoup

    row = [key, nameDict[key], src + alt]
    writer.writerow([c.encode('utf8') for c in row])

如果其中一些數據來自其他文件,請確保還先解碼為Unicode。 同樣, io.open()讀取這些文件可能是最好的選擇,以便在讀取時將數據解碼為Unicode值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM