繁体   English   中英

在Python中遍历多个URL CSV字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM