繁体   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