python csv |如果row = x,则打印包含x的列

时间:2017-01-10 14:57:22

标签: python python-3.x csv

我是python编程的新手,如果我犯了任何错误,请原谅我。我正在编写一个python脚本来读取一个csv文件,如果它包含行中的信息,则打印出列所需的单元格。

192.168.33.13 dmsdb_1

例如,I | A | B | C ---|----|---|--- 1 | Re | Mg| 23 ---|----|---|--- 2 | Ra | Fe| 90 行C的值介于20到24之间。然后,如果条件通过,它将返回Cell A1(Re)作为结果。

目前,我只有以下内容,我不知道如何从这里开始。

if-else

This可能包含我的问题的答案,但我似乎无法使其发挥作用。

更新

如果在行中有标题,我该如何让它工作?我想将条件更改为字符串,但如果我想搜索一系列值,则无效。

f = open( 'imageResults.csv', 'rU' )
for line in f:
     cells = line.split( "," )
     if(cells[2] >= 20 and cells[2] <= 24):
f.close()

1 个答案:

答案 0 :(得分:2)

您应该使用csv阅读器。它内置于python中,因此无需安装依赖项。然后你需要告诉python第三列是一个整数。这样的事情会做到:

import csv
with open('data.csv', 'rb') as f:
    for line in csv.reader(f):
        if 20 <= int(line[2]) <= 24:
            print(line)

将此数据放在data.csv

Re,Mg,23
Ra,Fe,90
Ha,Ns,50
Ku,Rt,20

输出将是:

$ python script.py
['Re', 'Mg', '23']
['Ku', 'Rt', '20']

更新

  

如果在[first]行中有一个标题,我该如何让它工作?

csv.DictReader就是这样。实际上,使用DictReader更安全,特别是当列的顺序可能更改或您在第三列之前插入列时。根据{{​​1}}

中的这些数据
data.csv

然后是python脚本:

Name,Lat,Ref
Re,Mg,23
Ra,Fe,90
Ha,Ns,50
Ku,Rt,20

P.S。欢迎来到python。这是学习编程的好语言