我正在尝试使用Python 3.x从给定的URL读取csv文件:
import pandas as pd
import requests
url = "https://github.com/cs109/2014_data/blob/master/countries.csv"
s = requests.get(url).content
c = pd.read_csv(s)
我有以下错误我怎样才能解决这个问题?我正在使用Python 3.4
最佳答案
更新:从 Pandas 0.19.2
您现在可以只是pass read_csv()
the url directly,尽管如果需要身份验证会失败。
对于较旧的 Pandas 版本,或(如果您需要身份验证),或出于任何其他HTTP容错原因:
将pandas.read_csv
与类似文件的对象一起用作第一个参数。
io.StringIO
。https://github.com/cs109/2014_data/blob/master/countries.csv
,您将得到 html
响应,而不是 raw csv;您应该使用github页面中Raw
链接给出的url来获取原始的csv响应,即https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv
例子:
import pandas as pd
import io
import requests
url="https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv"
s=requests.get(url).content
c=pd.read_csv(io.StringIO(s.decode('utf-8')))
笔记:在Python 2.x中,字符串缓冲区对象为
StringIO.StringIO