如何读取CSV特定项目并将包含此项目的行添加到列表中?

0dxa2lsx  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(125)

我有csv文件:

Type;Manufacturer;Model;Spec;Price
HDD;Seagate;Barracuda;1TB;35,99
HDD;Seagate;Barracuda;2TB;79
HDD;Intenso;;5TB;140
HDD;Fujitsu;;1TB;71,4
HDD;Western Digital;Purple Series;2TB;59
SSD;Western Digital;Blue;500GB;57
SSD;Samsung;970 EVO Plus;500GB;90,99
RAM;Corsair;Vengeance LPX;16GB;99

我需要按特定项查找行并将其追加到我尝试过列表中:

import csv
with open('komponentes.csv') as f:
    elements = [i.split(';')[0] for i in elements] 
    print(elements)
f.close
SDD=[] #SSD and HDD
RAM=[]
GPU=[]
CPU=[]
MB=[]
BP=[]
KRP=[]
for el in elements:
    if el=='SSD':
        SDD.append(elements)
        print(SDD)

但它给了我:

['Veids', 'HDD', 'HDD', 'HDD', 'HDD', 'HDD', 'SSD', 'SSD', 'RAM', 'RAM', 'RAM', 'RAM', 'GPU', 'GPU', 'GPU', 'GPU', 'CPU', 'CPU', 'CPU', 'CPU', 'MB', 'MB', 'MB', 'MB', 'PSU', 'PSU', 'PSU', 'PSU', 'Korpuss', 'Korpuss', 'Korpuss', 'Korpuss', 'Disc', 'Disc']
[['Veids', 'HDD', 'HDD', 'HDD', 'HDD', 'HDD', 'SSD', 'SSD', 'RAM', 'RAM', 'RAM', 'RAM', 'GPU', 'GPU', 'GPU', 'GPU', 'CPU', 'CPU', 'CPU', 'CPU', 'MB', 'MB', 'MB', 'MB', 'PSU', 'PSU', 'PSU', 'PSU', 'Korpuss', 'Korpuss', 'Korpuss', 'Korpuss', 'Disc', 'Disc']]
[['Veids', 'HDD', 'HDD', 'HDD', 'HDD', 'HDD', 'SSD', 'SSD', 'RAM', 'RAM', 'RAM', 'RAM', 'GPU', 'GPU', 'GPU', 'GPU', 'CPU', 'CPU', 'CPU', 'CPU', 'MB', 'MB', 'MB', 'MB', 'PSU', 'PSU', 'PSU', 'PSU', 'Korpuss', 'Korpuss', 'Korpuss', 'Korpuss', 'Disc', 'Disc'], ['Veids', 'HDD', 'HDD', 'HDD', 'HDD', 'HDD', 'SSD', 'SSD', 'RAM', 'RAM', 'RAM', 'RAM', 'GPU', 'GPU', 'GPU', 'GPU', 'CPU', 'CPU', 'CPU', 'CPU', 'MB', 'MB', 'MB', 'MB', 'PSU', 'PSU', 'PSU', 'PSU', 'Korpuss', 'Korpuss', 'Korpuss', 'Korpuss', 'Disc', 'Disc']]

而我需要的是:

["SSD;Western Digital;Blue;500GB;57", "HDD;Seagate;Barracuda;2TB;79"]
["RAM;Corsair;Vengeance LPX;16GB;99"]
gz5pxeao

gz5pxeao1#

使用csv模块来解析它,然后将row[0]与用于追加到相应列表的字符串进行比较。

import csv

with open('komponentes.csv') as f:
    csvf = csv.reader(f, sep=';')
    for row in csvf:
        row_string = ';'.join(row)
        if row[0] in ('SDD', 'HDD'):
            SDD.append(row_string)
        elif row[0] == 'RAM':
            RAM.append(row_string)
1mrurvl1

1mrurvl12#

如果你只需要

["SSD;Western Digital;Blue;500GB;57", "HDD;Seagate;Barracuda;2TB;79"]
["RAM;Corsair;Vengeance LPX;16GB;99"]

只管做

with open('komponentes.csv') as f:
    result = f.readlines()

相关问题