【问题标题】:Iterating through Multiple URL CSV Strings in Python在 Python 中遍历多个 URL CSV 字符串
【发布时间】:2018-01-16 14:37:02
【问题描述】:

我想学习如何从 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”(我可以复制代码两次和硬代码这些值以获得正确的结果),但我不知道如何使这个迭代工作。相反,我收到了缺少架构错误。

我做错了什么?

【问题讨论】:

    标签: python csv url


    【解决方案1】:

    当你这样做时:

    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")
    

    现在您可以看到为什么您会收到缺少架构的错误。 URL 中没有https://。您的代码正在计算一个变量 name,然后尝试使用该名称,就好像它是一个 variable

    改为这样做:

    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]) 
    

    【讨论】:

    • 嘎。谢谢你的解释!
    猜你喜欢
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    相关资源
    最近更新 更多