gpt4 book ai didi

python - Python 中 UTF-8 CSV 输入的问题

转载 作者:IT老高 更新时间:2023-10-28 20:40:41 24 4
gpt4 key购买 nike

这看起来应该很容易解决,但到目前为止,我还没有找到解决方案。我有一个单列 csv 文件,其中保存在 utf-8 中的非 ascii 字符,我想读入并存储在列表中。我正在尝试遵循 "Unicode Sandwich" 的原则并在读取文件时解码:

import codecs
import csv

with codecs.open('utf8file.csv', 'rU', encoding='utf-8') as file:
input_file = csv.reader(file, delimiter=",", quotechar='|')
list = []
for row in input_file:
list.extend(row)

这会产生可怕的“编解码器无法在位置编码字符,序数不在范围内 (128)”错误。

我也尝试过调整 this answer 的解决方案,返回类似的错误

def unicode_csv_reader(utf8_data, dialect=csv.excel, **kwargs):
csv_reader = csv.reader(utf8_data, dialect=dialect, **kwargs)
for row in csv_reader:
yield [unicode(cell, 'utf-8') for cell in row]

filename = 'inputs\encode.csv'
reader = unicode_csv_reader(open(filename))
target_list = []
for field1 in reader:
target_list.extend(field1)

改编自 docs 的非常相似的解决方案返回相同的错误。

def unicode_csv_reader(utf8_data, dialect=csv.excel):
csv_reader = csv.reader(utf_8_encoder(utf8_data), dialect)
for row in csv_reader:
yield [unicode(cell, 'utf-8') for cell in row]

def utf_8_encoder(unicode_csv_data):
for line in unicode_csv_data:
yield line.encode('utf-8')

filename = 'inputs\encode.csv'
reader = unicode_csv_reader(open(filename))
target_list = []
for field1 in reader:
target_list.extend(field1)

显然我错过了一些东西。我看到的有关此问题的大多数问题似乎早于 Python 2.7,因此此处的更新可能会很有用。

最佳答案

您的第一个代码段不起作用。您正在将 unicode 数据提供给 csv 阅读器,但(如文档所述)无法处理它。

您的第二个和第三个片段混淆了。您只需要以下内容:

f = open('your_utf8_encoded_file.csv', 'rb')
reader = csv.reader(f)
for utf8_row in reader:
unicode_row = [x.decode('utf8') for x in utf8_row]
print unicode_row

关于python - Python 中 UTF-8 CSV 输入的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10710446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com