所以我有这个csv有这样的行:
"41975","IT","Catania","2016-01-12T10:57:50+01:00",409.58
"538352","DE","Düsseldorf","2015-12-18T20:50:21+01:00",95.03
"V22211","GB","Nottingham","2015-12-31T11:17:59+00:00",872
在当前示例中,第一个和第三个单词工作正常,但程序在打印Düsseldorf
时崩溃,ü
有问题
我希望能够从此csv文件中获取信息并能够print
它。这是我的代码:
def load_sales(file_name):
SALES_ID = 0
SALES_COUNTRY = 1
SALES_CITY = 2
SALES_DATE = 3
SALES_PRICE =4
with open(file_name, 'r', newline='', encoding='utf8') as r:
reader = csv.reader(r)
result=[]
for row in reader:
sale={}
sale["id"]=row[SALES_ID]
sale["country"]=row[SALES_COUNTRY]
sale["city"]=row[SALES_CITY]
sale["date"]=row[SALES_DATE]
sale["price"]=float(row[SALES_PRICE])
result.append(sale)
当我打印时,我打印result
我得到:
File "C:\Anaconda3\lib\encodings\cp866.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\xfc' in position 384: character maps to <undefined>
到目前为止,我尝试过:使用encoding
,utf-8
等更改open函数中的UTF8
值,从而生成打印函数:
def write_uft8(data):
print(data).encode('utf-8')
但是当你必须打印字典列表时,这不是一种可行的方法。
有人告诉我,问题是我的python没有设置为将这些消息编码为utf-8,是真的,我该如何更改?
答案 0 :(得分:0)
这里的问题是当python写入流时,它会尝试以与该流的编码或字符集兼容的方式编写文本。
在这种情况下,您似乎在Windows控制台中运行该命令,该控制台设置为显示西里尔文本(CP866)。西里尔语代码页不包含ü
的相应字符,因此无法将字符串解码为适当的字符以进行输出。
将Windows cmd控制台的活动代码页更改为utf-8
应该会有所帮助:
$ CHCP 65001