我再次進入那個該死的Unicode的地獄......嘆=(Unicode的混亂#3423435
有兩個文件:
$ file *
kreise_tmp.geojson: ASCII text
pandas_tmp.csv: UTF-8 Unicode text
我讀的第一個文件是這樣的:
with open('kreise_tmp.geojson') as f:
jdata = json.loads(f.read())
我讀第二個文件是這樣的:
pandas_data = pd.read_csv(r'pandas_tmp.csv', sep=";")
現在檢查出什麼是字符串內:
>>> jdata['features'][0]['properties']['name']
u'Kreis Euskirchen' # a unicode string?
>>> pandas_data['kreis'][0]
'Kreis D\xc3\xbcren' # not a unicode string?
爲什麼從「UTF-8 Unicode文本」文件中的字符串只是正常的字符串,字符串從「ASCII文本」文件unicode字符串?
請附上'kreise_tmp.geojson'和'pandas_tmp.csv'的'hexdump'。另請注意,按規範json格式不能包含非asci符號。所以json可能包含相同的'\ xc3',但它會加載到'ü'中。我想你需要在打開文件時指定編碼 - utf8,檢查'pd.read_csv'是否包含編碼參數,如果不需要手動將'bytes'轉換爲utf8。 – deathangel908
什麼版本的Python?嘗試升級到Python 3.6。 –
@ deathangel908 JSON可以包含非ASCII符號。 http://json.org/ - 「*任何UNICODE字符* ...」 – melpomene