Python csv.DictReader嵌入了非unicode字符

时间:2013-07-16 14:21:49

标签: python csv unicode

我正在尝试在python中将csv导入JSON:

myjson = list()
with open("stuff.csv","rU") as f:
    vals = csv.DictReader(f)
    for i in vals:
        myjson.append(i)

当我使用csv的DictReader()时,我经常会在几乎所有记录中看到看似无效的unicode字符,例如:

\xc9

...在文本字段中。据我所知,这是一个有效的unicode字符,用于倒置e 。但是,因为它嵌入在较长的字符串中,所以它实际上是未编码的,并且整个键是str类型而不是类型unicode。

我认为这是我给出的数据条目或csv模块的遗留物,但有没有任何标记,标记或替代方式读取CSV,通过转换来适当处理这个?

1 个答案:

答案 0 :(得分:0)

您正在查看Python字符串文字。 \xc9序列是转义码,Python用于任何不可打印的代码点或代码点128.对于超过255的代码点,使用\uxxxx转义序列。

默认情况下,Python将打印容器中包含的值的表示,例如列表或字典。 unicode值的表示(repr()函数结果)打印为python字符串文字:

>>> print [u'Hello: \xc9']
[u'Hello: \xc9']
>>> print [u'Hello: \xc9'][0]
Hello: É