Unicode混淆#3423435

时间:2017-09-15 11:08:19

标签: unicode python-2.x python-unicode

我再次进入那该死的unicode-hell ...叹气=(

有两个文件:

$ 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 text”文件中的字符串只是普通字符串而“ASCII text”文件中的字符串是unicode字符串?

2 个答案:

答案 0 :(得分:2)

JSON字符串始终是Unicode。

with Client() as client:
    x.compute()

但它们通常使用~$ python2 >>> import json >>> json.loads('"\xc3\xbc"') u'\xfc' 转义序列化,因此\u只会看到ASCII。

file

答案 1 :(得分:0)

encoding='utf-8'添加到文件的开头,使用utf-8

对其进行解码
pandas_data = pd.read_csv(r'pandas_tmp.csv', sep=";",  encoding='utf8')

您也可以使用JSON

with open('kreise_tmp.geojson',  encoding='utf8') as f:
    jdata = json.loads(f.read())

同样在Python 2.7中,您可以将其添加到文件的顶部..

#!/usr/bin/env python
# -*- coding: utf-8 -*-