Как прочитать 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