【问题标题】:Python, UnicodeEncodeErrorPython,Unicode编码错误
【发布时间】:2013-12-02 09:09:19
【问题描述】:

你好,我有这段代码

import urllib.request
import string
import time
import gzip
from io import BytesIO
from io import StringIO
from zipfile import ZipFile
import csv
import datetime
from datetime import date
import concurrent.futures

den = date.today().replace(day=1) - datetime.timedelta(days=1)
url = '' + den.strftime("%Y%m%d") + '_OB_ADR_csv.zip'

data = urllib.request.urlopen(url).read()
zipdata = BytesIO()
zipdata.write(data)

csvfile = open('./test.csv', 'w', newline='')
csvwrite = csv.writer(csvfile, delimiter=';')

with ZipFile(zipdata) as zip:
    for i, nazev in enumerate(zip.namelist()):
        if i == 0:
            continue

        csvstring = StringIO(str(zip.read(nazev), encoding='windows-1250'))
        csvreader = csv.reader(csvstring, delimiter=';')

        for j, row in enumerate(csvreader):
            if j == 0 and i != 1:
                continue

            csvwrite.writerow(row)

csvfile.close()

当我运行它时,它有时会在“csvwrite.writerow(row)”处抛出“UnicodeEncodeError: 'ascii' codec can't encode character '\xf3' in position 1: ordinal not in range(128)”

我该如何解决这个问题?谢谢。

编辑: 我在 Python 3.3 下运行它

【问题讨论】:

    标签: csv encoding python-3.3


    【解决方案1】:

    您没有告诉 csv.writer 编码。看看pydocs for the csv module

    要使用不同的编码解码文件,请使用 encoding 参数 开放的......[t]这同样适用于写作以外的东西 系统默认编码:打开时指定编码参数 输出文件。

    你可以从 UnicodeEncodeError 中看出 Python 认为你想要用 ascii 编写的文件。只需指定编码参数并选择您想要的编码(我的建议是encoding='utf-8')。

    【讨论】:

    • 我忘了写我是在python 3.2下运行的
    猜你喜欢
    • 2011-03-14
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    相关资源
    最近更新 更多