Как прочитать CSV файл из URL-адреса с помощью Python?

когда я делаю скручивание к ссылке на вызов API http://example.com/passkey=wedsmdjsjmdd

curl 'http://example.com/passkey=wedsmdjsjmdd'

Я получаю выходные данные сотрудника в формате файла CSV, например:

"Steve","421","0","421","2","","","","","","","","","421","0","421","2"

Как можно разобрать это с помощью Python.

Я старался:

import csv 
cr = csv.reader(open('http://example.com/passkey=wedsmdjsjmdd',"rb"))
for row in cr:
    print row

но это не сработало и я получил ошибку

http://example.com/passkey=wedsmdjsjmdd No such file or directory:

Спасибо!

Ответ 1

Вам нужно заменить 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
...

Ответ 2

Используя pandas, очень просто прочитать файл csv непосредственно с URL-адреса

import pandas as pd
data = pd.read_csv('https://example.com/passkey=wedsmdjsjmdd')

Это будет читать ваши данные в табличном формате, что будет очень легко обрабатывать

Ответ 3

Вы можете сделать это и с модулем запросов:

url = 'http://winterolympicsmedals.com/medals.csv'
r = requests.get(url)
text = r.iter_lines()
reader = csv.reader(text, delimiter=',')

Ответ 4

Чтобы повысить производительность при загрузке большого файла, ниже может работать более эффективно:

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(), мы передаем generator to csv.reader(). Поступая таким образом, мы разрешаем csv.reader() лениво перебирать каждую строку в ответе с помощью for row in reader.

Это позволяет избежать загрузки всего файла в память, прежде чем мы начнем его обрабатывать, резко сократив объем памяти для больших файлов.

Ответ 5

import pandas as pd
url='https://raw.githubusercontent.com/juliencohensolal/BankMarketing/master/rawData/bank-additional-full.csv'
data = pd.read_csv(url,sep=";") # use sep="," for coma separation. 
data.describe()

enter image description here

Ответ 6

Листы Google предлагают решение под файлом → публикация в Интернете → и по ссылке вы можете создать ссылку, которая автоматически загружает csv. Инструкции и скриншоты также можно найти здесь: http://support.aftership.com/article/141-csv-auto-fetch-using-google-drive-spreadsheet