Python 使用StringIO和read_编码错误

Python 使用StringIO和read_编码错误,python,pandas,character-encoding,Python,Pandas,Character Encoding,我正在使用API获取一些数据。返回的数据是Unicode格式的(不是dictionary/json对象) 获取数据 我使用以下代码将其转换为数据帧: from io import StringIO import pandas as pd pd.concat([pd.read_csv(StringIO(d.text), sep = ";") for d in data]) 除非结果中包含非英语字符,特别是韩语、汉语或日语,否则效果很好。它完全把他们弄得一团糟。我尝试添加编码参数来读取

我正在使用API获取一些数据。返回的数据是Unicode格式的(不是dictionary/json对象)

获取数据 我使用以下代码将其转换为数据帧:

from io import StringIO     
import pandas as pd

pd.concat([pd.read_csv(StringIO(d.text), sep = ";") for d in data])
除非结果中包含非英语字符,特别是韩语、汉语或日语,否则效果很好。它完全把他们弄得一团糟。我尝试添加编码参数来读取带有utf_8、cp1252和iso-8859-1作为值的_csv。这些都不起作用


如何正确阅读这些数据?

经过一些分析和研究,我能够确定问题所在。API返回的unicode已解码或编码不正确,但可以进行设置。因此,我所做的是添加一行来设置来自请求的有效负载的编码

data = []
for urls in api_call_list:
    r = requests.get(urls)
    r.encoding = 'utf-8'
    data.append(r)
然后添加编码参数以读取\u csv:

pd.concat([pd.read_csv(StringIO(d.text), sep = ";", encoding='utf-8') for d in data])

这就对了。文档在这里:

您是否尝试了
[pd.read\u csv(StringIO(d.text)表示数据中的d]
?刚刚做了,它不起作用。虽然有一个分号分隔符。没有它,我只得到了一列!不,我不小心掉了分号,我的意思是访问
数据中每个元素的
.text
属性,所以
pd.concat([pd.read_csv(StringIO(d.text,sep=“;”)表示数据中的d)])
哦,糟糕,这是我代码中的d.text。
pd.concat([pd.read_csv(StringIO(d.text), sep = ";", encoding='utf-8') for d in data])