我想从第一个列表中展示第一个词,然后从第二个列表中展示十个词,以此类推- Python

2024-09-29 16:29:32 发布

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

下面的代码用于从网页中抓取数据。实际上,此代码的输出
并考虑另一个列表的输出

list2=[]

###-I am collecting all span tags ,storing as text in variable called alpha.

for i in range(len(contents)):
        for j in contents[i].findAll('span'):
            alpha=j.text
#     print(alpha)
            alphachar=re.sub('[^a-zA-Z]+', '', alpha) #I am eliminating empty lists.
            alphabets=alphachar.split()  #converting to list
            for item in alphabets:
                if item!=[]:
                    list2.append(item)   #I am appending to lists
for (a, b) in zip(li,list2):
            print(a,b)     

上述代码的输出为:


AMD AdvancedMicroDevicesInc
BAC BankofAmericaCorp
GE GeneralElectricCo
F FordMotorCo
M MacysInc
PFE PfizerInc
FCX FreeportMcMoRanInc
BMY BristolMyersSquibbCo
T ATTInc
JWN NordstromInc
JWN NordstromInc
M MacysInc
LB LBrandsInc
GPS GapInc
SJM JMSmuckerCo
CPRI CapriHoldingsLtd
RL RalphLaurenCorp
BIIB BiogenInc
FCX FreeportMcMoRanInc
ADS AllianceDataSystemsCorp

现在我有了另一个名为name的列表:

name = allbody.findAll('h3')

其产出是:

Most actives,Gainers

现在,我希望输出为:


 - Most actives

AMD AdvancedMicroDevicesInc
BAC BankofAmericaCorp
GE GeneralElectricCo
F FordMotorCo
M MacysInc
PFE PfizerInc
FCX FreeportMcMoRanInc
BMY BristolMyersSquibbCo
T ATTInc
JWN NordstromInc

 - Gainers

JWN NordstromInc
M MacysInc
LB LBrandsInc
GPS GapInc
SJM JMSmuckerCo
CPRI CapriHoldingsLtd
RL RalphLaurenCorp
BIIB BiogenInc
FCX FreeportMcMoRanInc
ADS AllianceDataSystemsCorp

我尝试使用嵌套for循环来表示名称和zip函数,但没有成功。有人能在这方面提供帮助吗


Tags: 代码textinalpha列表foritemam
1条回答
网友
1楼 · 发布于 2024-09-29 16:29:32

这种情况下range(len())可以用于为list2[i:i+10]生成i

使用

for i range(0, len(list2), 10):

您可以为i赋值010等,这将创建list2[0:10]list2[10:20]

list1 = ['Most actives', 'Gainers']

data = '''AMD AdvancedMicroDevicesInc
BAC BankofAmericaCorp
GE GeneralElectricCo
F FordMotorCo
M MacysInc
PFE PfizerInc
FCX FreeportMcMoRanInc
BMY BristolMyersSquibbCo
T ATTInc
JWN NordstromInc
JWN NordstromInc
M MacysInc
LB LBrandsInc
GPS GapInc
SJM JMSmuckerCo
CPRI CapriHoldingsLtd
RL RalphLaurenCorp
BIIB BiogenInc
FCX FreeportMcMoRanInc
ADS AllianceDataSystemsCorp'''

list2 = data.split('\n')

for name, i in zip(list1, range(0, len(list2), 10)):
    print('\n-', name, '\n')
    for item in list2[i:i+10]:
        print(item)

编辑:据我所知,切片没有特殊功能list2,但您可以创建自己的

(来源:How do you split a list into evenly sized chunks?

def chunks(l, n):
    for i in range(0, len(l), n):
        yield l[i:i + n]

然后forzip()的循环看起来会更好

def chunks(l, n):
    for i in range(0, len(l), n):
        yield l[i:i + n]


list1 = ['Most actives', 'Gainers']

data = '''AMD AdvancedMicroDevicesInc
BAC BankofAmericaCorp
GE GeneralElectricCo
F FordMotorCo
M MacysInc
PFE PfizerInc
FCX FreeportMcMoRanInc
BMY BristolMyersSquibbCo
T ATTInc
JWN NordstromInc
JWN NordstromInc
M MacysInc
LB LBrandsInc
GPS GapInc
SJM JMSmuckerCo
CPRI CapriHoldingsLtd
RL RalphLaurenCorp
BIIB BiogenInc
FCX FreeportMcMoRanInc
ADS AllianceDataSystemsCorp'''

list2 = data.split('\n')

for name, items in zip(list1, chunks(list2, 10)):
    print('\n-', name, '\n')
    for item in items:
        print(item)

相关问题 更多 >

    热门问题