我正在尝试使用以下python脚本将所有CSV元素转换为python对象,但并非CSV文件中的所有字符都采用UTF-8,因此我必须将所有这些字符都转换为可读格式,即UTF-8。我该如何实现?
我曾尝试使用像How to convert csv files encoding to utf-8这样的简单文本编辑器将csv文件转换为UTF-8,但是却无济于事。
我正在使用以下python文件:
__init__.py
Python产生以下错误:
import csv
filename = "file.csv"
rows = []
with open(filename, 'r') as csvfile:
csvreader = csv.reader(csvfile)
for row in csvreader:
rows.append(row)
print("Total no. of rows: %d"%(csvreader.line_num))
print('\nFirst 5 rows are:\n')
for row in rows[:5]:
for col in row:
print("%10s"%col),
print('\n')
答案 0 :(得分:0)
UTF-8现在是事实上的标准,因为它可以表示任何Unicode字符,但是出于兼容性原因,许多系统(大多数是Windows)仍使用其他编码。例如,对于西欧语言,Windows使用cp1252(这是Latin1变体)。
Latin1是一种有趣的编码,因为任何字节在Latin1中都是有效的,并且表示相同代码点的unicode字符。因此,当您要进行防弹解码并不确定实际编码时,它是 编码。只是如果编码不同,您将读取奇怪字符。例如,此utf-8编码的字符串“fête”(法语为fest)将读为'fête'
作为Latin1编码的字节字符串。
因此这不会中断(但可能会提供不正确的字符):
...
with open(filename, 'r', encoding='Latin1') as csvfile:
csvreader = csv.reader(csvfile)
...