Python在一个循环中使用两个列表

2024-10-04 13:19:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码,它有一个列表r3000,一个保存为html的链接列表。你知道吗

是否可以使用单独的列表保存具有不同名称的文件?你知道吗

例如,r3000将包含链接('http://research.investors.com/quotes/nyse-agilent-technologies-inc-a.htm?fromsearch=1'),然后有另一个名为r3000sym的列表,即['a','','',...]。然后文件将保存为a.html。你知道吗

import time
import urllib2
from urllib2 import urlopen

r3000 = ['http://research.investors.com/quotes/nyse-agilent-technologies-inc-a.htm?fromsearch=1',
         'http://research.investors.com/quotes/nyse-alcoa-inc-aa.htm?fromsearch=1',
         'http://research.investors.com/quotes/nasdaq-american-airlines-group-aal.htm?fromsearch=1',
         'http://research.investors.com/quotes/amex-altisource-asset-mgmt-aamc.htm?fromsearch=1',
         'http://research.investors.com/quotes/nyse-aarons-inc-aan.htm?fromsearch=1',
         'http://research.investors.com/quotes/nasdaq-applied-optoelectronics-aaoi.htm?fromsearch=1',
         'http://research.investors.com/quotes/nasdaq-a-a-o-n-inc-aaon.htm?fromsearch=1',
         'http://research.investors.com/quotes/nyse-advance-auto-parts-inc-aap.htm?fromsearch=1']

def yahooKeyStats(stock):
    try:
        site= stock
        hdr = {'User-Agent': 'Mozilla/5.0'}
        req = urllib2.Request(site,headers=hdr)
        page = urllib2.urlopen(req).read()


        dataFile = 'a.html'
        f = open(dataFile,'a')
        f.write(page)
        f.close()

        print 'Done',stock

    except Exception,e:
        print str(e)


for eachStock in r3000:
    yahooKeyStats(eachStock)

Tags: importcomhttp列表htmlurllib2quotesinc
3条回答

您可能正在寻找zip()函数。它基于给定的两个列表创建一个元组的iterable,您可以将其指定为局部循环变量。见:this post

使用两个元组将url和名称存储在一个列表中:

import time
import urllib2
from urllib2 import urlopen

r3000 = [
    ('a.html', 'http://research.investors.com/quotes/nyse-agilent-technologies-inc-a.htm?fromsearch=1'),
    ('b.html', 'http://research.investors.com/quotes/nyse-alcoa-inc-aa.htm?fromsearch=1'),
]

def yahooKeyStats(name, stock):
    try:
        site= stock
        hdr = {'User-Agent': 'Mozilla/5.0'}
        req = urllib2.Request(site,headers=hdr)
        page = urllib2.urlopen(req).read()

        with open(name,'a') as f:
            f.write(page)

        print 'Done',stock

    except Exception,e:
        print str(e)


for name, stock in r3000:
    yahooKeyStats(name, stock)

itertools是您想要的:

import itertools
for it1,it2 in itertools.izip(list1,list2):
    print(it1,it2)

Zip获取两个列表并从中生成元组列表,itertools允许您同时进行迭代。你知道吗

相关问题 更多 >