[英]Iterating through Multiple URL CSV Strings in 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
如果不清楚,我希望download = s.get(i)中的“ i”在第一次迭代时成为“ CSV_URL_1”,而在第二次迭代时变为“ CSV_URL_2”(我可以复制两次代码并将这些值硬编码为得到正确的结果),但我不知道如何使此迭代有效。 而是,我得到一个丢失的架构错误。
我究竟做错了什么?
执行此操作时:
concat = "CSV_URL_" + str(i)
csv_list.append(concat)
您将字符串"CSV_URL_1"
和"CSV_URL_2"
放入csv_list
。
但是,您的代码第一次执行此操作:
download = s.get(i)
您显然希望这意味着
download = s.get('https://raw.githubusercontent.com/fivethirtyeight/data/master/births/US_births_1994-2003_CDC_NCHS.csv')
但事实并非如此。 它的意思是
download = s.get("CSV_URL_1")
现在,您可以看到为什么丢失了架构错误。 网址中没有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])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.