2017-08-08 8 views
0

URLからCSVファイルを取得する方法を学びたいと思います。Pythonで複数のURL CSV文字列を繰り返す

以下のコードをCSV文字列変数の名前をハードコードすることで動作させることができますが、私は多くのCSV文字列を繰り返し処理する方法を学びたいと思っています。

import csv 
import requests 

CSV_URL_1 = 'https://raw.githubusercontent.com/fivethirtyeight/data/master/births/US_births_1994-2003_CDC_NCHS.csv' 
CSV_URL_2 = 'https://raw.githubusercontent.com/fivethirtyeight/data/master/births/US_births_2000-2014_SSA.csv' 

csv_list = [] 

for i in range(1,3): 
    concat = "CSV_URL_" + str(i) 
    csv_list.append(concat) 

with requests.Session() as s: 
    csv_list_dict = {} 
    for i in csv_list: 
     download = s.get(i) #This part is the problem 
     decoded_content = download.content.decode('utf-8') 
     cr= csv.reader(decoded_content.splitlines(), delimiter=',') 
     my_list = list(cr) 
     csv_list_dict[i]=my_list 

csv_list_dict 

は、第2の最初の繰り返しと「CSV_URL_2」に「CSV_URL_1」になるために、私は「私」のダウンロード中= s.get(i)をしたい、はっきりしていない場合には(私は、コードをコピーすることができますこれらの値を2回、ハードコードして正しい結果を得る)が、この反復作業の仕方を理解することはできません。代わりに、スキーマエラーが見つかりました。

私は間違っていますか?

答えて

0

あなたが行う場合は、この:

concat = "CSV_URL_" + str(i) 
csv_list.append(concat) 

あなたはcsv_list内の文字列"CSV_URL_1""CSV_URL_2"を入れています。

しかし、あなたのコードがこれを行う最初の時間:

download = s.get(i) 

あなたは明らかに

download = s.get('https://raw.githubusercontent.com/fivethirtyeight/data/master/births/US_births_1994-2003_CDC_NCHS.csv') 

を意味するためにこれを期待しているが、それはしていません。つまり、スキーマエラーが発生している理由がわかります。 URLにはhttps://はありません。あなたのコードは変数と計算し、その名前をという変数のように使用しようとしています。

代わりにこれを行います。

CSV_URL = ['https://raw.githubusercontent.com/fivethirtyeight/data/master/births/US_births_1994-2003_CDC_NCHS.csv', 'https://raw.githubusercontent.com/fivethirtyeight/data/master/births/US_births_2000-2014_SSA.csv'] 

for i in range(2): 
    download = s.get(CSV_URL[i]) 
+0

GAHを。ご説明ありがとうございます! – AwfulPersimmon

関連する問題