在Python中从列表中提取元素以创建嵌套列表

2024-10-02 16:28:21 发布

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

我有这样一个列表(使用bs4从一些html文本中提取):

test = ['Raji GlovesSixSixOneRegular price\n$29.99\nSale price$9.95\n\n                Save 67%\n              \nBUY 2 GET 1 FREE',
 'Comp Vortex GlovesSixSixOneRegular price\n$29.99\nSale price$9.95\n\n                Save 67%\n              \nBUY 2 GET 1 FREE',
 "Shasta 3/4 Cycling Tights - Women'sSpecializedRegular price\n$70.00\nSale price$14.95\n\n                Save 79%",]

len(test) # 3

我想循环遍历列表中的每一行(3个列表),并为每一行提取0、2和4个索引项。因此,输出如下所示:

此嵌套列表包含我要查看的所有项目

out = [['Raji GlovesSixSixOneRegular price',
 'Sale price$9.95',
 '                Save 67%'],['Comp Vortex GlovesSixSixOneRegular price',
     'Sale price$9.95',
     '                Save 67%'],["Shasta 3/4 Cycling Tights - Women'sSpecializedRegular price",
 'Sale price$14.95',
 '                Save 79%']]

我知道我可以从第一行中提取项目,如下所示:

item1 = test[0]
item1 = item1.split(sep = '\n')
item1
indices = [0,2,4]
values =[]
for i in indices:
    print(item1[i])
    values.append(item1[i])
    
values 


['Raji GlovesSixSixOneRegular price',
 'Sale price$9.95',
 '                Save 67%']

我是python新手,我努力从每一行中提取这些项目,并将它们追加回嵌套列表中(见上文)

有没有办法做到这一点


Tags: 项目testfree列表getsavesaleprice
3条回答

比如说:

out = []
indices = [0, 2, 4]

for elem in test:
    aux = []
    elem_split = elem.split('\n')
    for index in indices:
        item = elem_split[index]
        aux.append(item)
    out.append(aux)

你可以按下面的方法做

values = []
for item1 in test:
    item1 = item1.split(sep = '\n')
    indices = [0,2,4]
    value = []
    for i in indices:
        value.append(item1[i])
    values.append(value)
print(values)

简单列表理解

test = ['Raji GlovesSixSixOneRegular price\n$29.99\nSale price$9.95\n\n                Save 67%\n              \nBUY 2 GET 1 FREE',
 'Comp Vortex GlovesSixSixOneRegular price\n$29.99\nSale price$9.95\n\n                Save 67%\n              \nBUY 2 GET 1 FREE',
 "Shasta 3/4 Cycling Tights - Women'sSpecializedRegular price\n$70.00\nSale price$14.95\n\n                Save 79%",]

values = [i.split(sep = '\n')[0:5:2] for i in test]

相关问题 更多 >