Как читать 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:



Спасибо!

830   5  

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

    Ничего не найдено.