Pac*_*men 3 python csv unicode decode utf-8
让我们假设我需要编写然后在Python 3.6中的.csv中读取带有波兰语的字符串列表:
lista=['szcz??liwy','jab?ko','s?o?','kot']
由于无法在.csv中编写Unicode字符,因此我将字符串编码为utf-8,因此数据在文件中保存(在第一个.csv单元格内):
b'szcz\xc4\x99\xc5\x9bliwy',b'jab\xc5\x82ko',b's\xc5\x82o\xc5\x84',b'kot'
但是我无法使用以下代码解码output.csv文件中的数据:
with open('output.csv') as csvarchive:
    entrada = csv.reader(csvarchive)
    for reg in entrada:
        lista2=reg
print(lista2)
["b'szcz\\xc4\\x99\\xc5\\x9bliwy'", "b'jab\\xc5\\x82ko'", "b's\\xc5\\x82o\\xc5\\x84'", "b'kot'"]
lista2 仍然是一个字符串列表,但使用utf-8编码,我无法恢复特殊字符.
我尝试了几种方法,比如在'rb'模式下读取文件,再次编码和解码......但是因为我是新手,所以我没有成功.它必须有非常简单的解决方案.
Tom*_*lak 10
newline=''(这适用于Python csv模块)因此,假设您的CSV文件是UTF-8编码的,请使用:
with open('output.csv', 'r', encoding='UTF-8', newline='') as csvarchive:
    entrada = csv.reader(csvarchive)
    for reg in entrada:
        # do something with the data row, it's already decoded
这同样适用于编写文件:
with open('output.csv', 'w', encoding='UTF-8', newline='') as csvarchive:
    writer = csv.writer(csvarchive)
    # write data to the writer, it will be encoded automatically
无需进行任何手动字符串编码.将字符串值csv写入writer,文件编码将透明地发生.
| 归档时间: | 
 | 
| 查看次数: | 5474 次 | 
| 最近记录: |