根据索引从Python列表中过滤值

时间:2018-11-13 14:04:16

标签: python python-3.x list

有一个关于Python列表的简单问题。我正在尝试读取包含以下数据的csv文件:

with open('file.csv') as f:
    lines = f.read().splitlines()
    lines = [x.strip() for x in lines] 

我能够基于索引提取csv文件的文件值,但无法过滤相应的值。下面给出的是csv文件中数据的示例视图

name,parent,child
Apple,iPhone,iPhoneX
Samsung,Note,Note 5

任何人都可以提供帮助,如何从上面提取iPhone和iPhoneX等值。谢谢。

2 个答案:

答案 0 :(得分:4)

该文件是CSV文件。为什么不退后一步,将其视作这样呢?

通过使用csv.DictReader,索引被列名完全封装:

import csv 

with open('file.csv') as f:
    reader = csv.DictReader(f)
    for line in reader:
        print(line['parent'], line['child'])

输出

# iPhone iPhoneX
# Note Note 5

如果由于某种原因您坚持要处理索引,那么您也可以这样做:

import csv 

with open('file.csv') as f:
    reader = csv.reader(f)
    next(reader)  # skipping the header line
    for line in reader:
        print(line[1], line[2])

输出

# iPhone iPhoneX
# Note Note 5

答案 1 :(得分:0)

您可以使用DictReader,如https://docs.python.org/2/library/csv.html中所述,文件第一行中的值将用作每一行的字段名(属性)

import csv

with open('file.csv') as csvfile:
     reader = csv.DictReader(csvfile)
     for row in reader:
         print(row['name'], row['parent'], row['child'])