我再次进入那个该死的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