2017-04-04 44 views
1

我想read_csv csv文件与西里尔字体与pandaspython熊猫read_cvs加载utf-8

import pandas 
data = pandas.read_csv('dataset.csv', delimiter='\|\|', engine='python', encoding='utf-8') 
print type(data.name[0]) 

<type 'str'> 

在这里,我期待得到unicode

print type(u'hello') 

<type 'unicode'> 

我做错了吗?

+0

Python是鸭类型。你永远不应该问什么类型的对象。这就是说,你需要提供一些例子,你可以展示你的产品和你想要的产品。你的代码显示正确AFAIK – firelynx

+0

我不知道熊猫如何实现'read_csv'方法,但是如果它使用std.lib。 'csv'模块,那么解决这个问题的方法可能不是微不足道的,因为Python 2的'csv'不支持解码文件(实际上这很令人伤心)。现在再切换到Python 3的另一个原因! – lenz

回答

0

简答:Unicode是未编码文本。 UTF-8是编码 unicode字符的一种方式。当大熊猫导入你的UTF-8编码文本时,它将它转换为python str类型,即解码文本。在Python 3中,str类型与unicode相同。

为了更深入的了解,请参阅:

  1. UTF-8 vs Unicode
  2. Python str vs Unicode
+0

非常感谢您的澄清。 – com

+1

OP显然使用Python 2(请参阅打印语句)。在Python 2中,解码*(我认为这就是你的意思是“未编码”)文本的类型是'unicode'。所以,显然,熊猫没有**正确解码输入文本。 – lenz

+0

公平点......我不知道这是如何工作在蟒蛇2.任何想法@lenz? – oscarbranson