字符编码有问题

时间:2016-12-03 20:04:49

标签: python encoding

请帮忙。

我正在从意大利twitterers下载推文进行后续分析。 下载后,我将它们存储在python数据框中,然后将它们写入文件中。

在文件中写入时,意大利语中存在的“è”等特殊字符将转换为X8 / XE之类的字符或类似字符。

我尝试了几种编码,如utf8,Latin1或ISO-8859-1,但问题仍然存在。

数据框的每一行都是一个用户,其中包含不同的信息,如名称,屏幕,名称....和描述,这是我遇到问题的字段。

以下是我用来将用户添加到现有数据框的行:

int age() const

这就是我在文件中写信息的方式

b=pd.DataFrame(np.array([[user.id,
                             user.created_at,
                             user.lang.encode('utf-8'),
                             user.screen_name.encode('utf-8'),
                             user.name.encode('utf-8'),
                             user.location.encode('utf-8'),
                             user.description.encode('utf-8'),
                             user.followers_count,                        
                             user.profile_image_url_https.encode('utf-8')]]), columns=col).append(b, ignore_index=True)

从Twitter下载后,在数据框中我可以阅读:

  

“Lavitaèun'opportunità... coglila”

但是在文件中它被转换为:

  

b“La vita \ xc3 \ xa8 un'opportunit \ xc3 \ xa0 ... coglila”

如何将其重新转换回原始字符串???

1 个答案:

答案 0 :(得分:0)

您是否尝试过不编码或解码为utf-8?这应该是开箱即用的。 如果你真的想要解码它们,那么在每个系列上使用.str.decode()方法:

b['series_name'] = b['series_name'].str.decode('utf-8')

然后将其保存到csv而不进行任何编码:

b.to_csv(filename)