【发布时间】:2017-04-24 21:29:12
【问题描述】:
我正在使用 API 来获取一些数据。返回的数据是 Unicode(不是字典/json 对象)。
获取数据
data = []
for urls in api_call_list:
data.append(requests.get(urls))
the data looks like this:
>>> data[0].text
u'Country;Celebrity;Song Volume;CPP;Index\r\nus;Taylor Swift;33100;0.83;0.20\r\n'
>>> data[1].text
u'Country;Celebrity;Song Volume;CPP;Index\r\nus;Rihanna;28100;0.76;0.33\r\n'
我使用此代码将其转换为数据框:
from io import StringIO
import pandas as pd
pd.concat([pd.read_csv(StringIO(d.text), sep = ";") for d in data])
工作正常,除非结果中包含非英文字符,特别是韩文、中文或日文。它完全使他们乱码。我尝试将编码参数添加到 read_csv,并将 utf_8、cp1252 和 iso-8859-1 作为值。这些都不起作用。
我应该如何正确读取这些数据?
【问题讨论】:
-
你试过
[pd.read_csv(StringIO(d.text) for d in data]吗? -
刚刚做了,没用。虽然显然有一个分号分隔符。 .没有它,我只有一列!
-
不,我不小心把分号掉了,我的意思是访问
data中每个元素的.text属性,所以pd.concat([pd.read_csv(StringIO(d.text, sep=";") for d in data]) -
哦,我的错,我的代码中是 d.text。
标签: python pandas character-encoding