正如我评论的那样,您需要使用StringIO对象并进行解码,即c=pd.read_csv(io.StringIO(s.decode("utf-8")))
如果使用请求,则需要进行解码,因为如果您使用.text ,则content会返回字节,您只需要像s = requests.get(url).text
c = 那样传递s即可pd.read_csv(StringIO(s))
。
一种更简单的方法是将原始数据的正确url 直接传递给read_csv
,您不必传递像object这样的文件,您可以传递url从而根本不需要请求:
c = pd.read_csv("https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv")
print(c)
输出:
Country Region
0 Algeria AFRICA
1 Angola AFRICA
2 Benin AFRICA
3 Botswana AFRICA
4 Burkina AFRICA
5 Burundi AFRICA
6 Cameroon AFRICA
..................................
从 文档:
filepath_or_buffer:
字符串或文件句柄/ StringIO字符串可以是URL。有效的URL方案包括http,ftp,s3和file。对于文件URL,需要一个主机。例如,本地文件可以是文件://localhost/path/to/table.csv
c=pd.read_csv(io.StringIO(s.decode("utf-8")))
但您要获取的不是HTML的CSV文件,而是无法返回的文件,因此它将无法正常工作