Как читать CSV-файл из URL-адреса с помощью Python?
, Когда я делаю завиток на вызов API ссылке http://domain.com/passkey=wedsmdjsjmdd
curl 'http://domain.com/passkey=wedsmdjsjmdd'
Я получаю выходные данные сотрудника в формате csv, например:
"Steve","421","0","421","2","","","","","","","","","421","0","421","2"
Как можно разобрать это с помощью python.
Я попробовал:
import csv
cr = csv.reader(open('http://domain.com/passkey=wedsmdjsjmdd',"rb"))
for row in cr:
print row
Но это не сработало, и я получил ошибку
http://domain.com/passkey=wedsmdjsjmdd No such file or directory:
Спасибо!
5 ответов:
Вам нужно заменить
openна urllib.urlopen или urllib2.urlopen .Например
import csv import urllib2 url = 'http://winterolympicsmedals.com/medals.csv' response = urllib2.urlopen(url) cr = csv.reader(response) for row in cr: print rowЭто приведет к следующему
Year,City,Sport,Discipline,NOC,Event,Event gender,Medal 1924,Chamonix,Skating,Figure skating,AUT,individual,M,Silver 1924,Chamonix,Skating,Figure skating,AUT,individual,W,Gold ...
С помощью pandas очень просто прочитать csv-файл непосредственно из url
import pandas as pd data = pd.read_csv('https://example.com/passkey=wedsmdjsjmdd')Это позволит читать ваши данные в табличном формате, который будет очень легко обрабатывать
Это можно сделать и с помощью модуля запросов:
url = 'http://winterolympicsmedals.com/medals.csv' r = requests.get(url) text = r.iter_lines() reader = csv.reader(text, delimiter=',')
Чтобы увеличить производительность при загрузке большого файла, ниже может работать немного эффективнее:
import requests from contextlib import closing import csv url = "http://download-and-process-csv-efficiently/python.csv" with closing(requests.get(url, stream=True)) as r: reader = csv.reader(r.iter_lines(), delimiter=',', quotechar='"') for row in reader: # Handle each row here... print rowПутем установки
stream=Trueв запросе GET, когда мы передаемr.iter_lines()в csv.reader (), мы передаем генератор в csv.читатель(). Таким образом, мы включаем csv.reader() лениво перебирать каждую строку в ответе сfor row in reader.Это позволяет избежать загрузки всего файла в память до того, как мы начнем его обрабатывать, что значительно снижает нагрузку на память для больших файлов.
Google sheets предлагает решение в разделе file - > publish to web - > и в разделе link Вы можете создать ссылку, которая автоматически загружает csv. Инструкции и скриншоты также можно найти здесь: http://support.aftership.com/article/141-csv-auto-fetch-using-google-drive-spreadsheet
Comments