[英]Encoding csv files on opening with Python
所以我有這個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>
到目前為止,我已經嘗試過:使用utf-8
, UTF8
等更改open函數中的encoding
值,制作打印功能:
def write_uft8(data):
print(data).encode('utf-8')
但是,當您必須打印字典列表時,這不是一種可行的方法。
有人告訴我,問題是我的python沒有設置為將這些消息編碼為utf-8,這是真的,我該如何更改它?
這里的問題是,當python寫入流時,它會嘗試以與該流的編碼或字符集兼容的方式編寫文本。
在這種情況下,您似乎在Windows控制台中運行該命令,該控制台設置為顯示西里爾文本(CP866)。 西里爾語代碼頁不包含ü
的相應字符,因此無法將字符串解碼為適當的字符以進行輸出。
將Windows cmd控制台的活動代碼頁更改為utf-8
應該有助於:
$ CHCP 65001
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.