我正在使用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作为值。这些都没有奏效。
我应该如何正确阅读这些数据?
答案 0 :(得分:0)
经过一些分析和研究,我能够找出问题所在。 API返回的unicode已解码或没有正确的编码但可以设置。所以我所做的是添加一行来设置来自请求的有效负载的编码。
data = []
for urls in api_call_list:
r = requests.get(urls)
r.encoding = 'utf-8'
data.append(r)
然后将编码参数添加到read_csv:
pd.concat([pd.read_csv(StringIO(d.text), sep = ";", encoding='utf-8') for d in data])
设定正确。文档在这里:http://docs.python-requests.org/en/master/user/quickstart/