python csv |如果行=x,则打印包含x的列
我是python编程新手,请原谅我犯了任何错误。我正在编写一个python脚本来读取csv文件,并打印出列中所需的单元格(如果该列包含行中的信息)python csv |如果行=x,则打印包含x的列,python,python-3.x,csv,Python,Python 3.x,Csv,我是python编程新手,请原谅我犯了任何错误。我正在编写一个python脚本来读取csv文件,并打印出列中所需的单元格(如果该列包含行中的信息) | A | B | C ---|----|---|--- 1 | Re | Mg| 23 ---|----|---|--- 2 | Ra | Fe| 90 例如,Iif-elseC行的值介于20到24之间。然后,如果条件通过,它将返回单元格A1(Re)作为结果 目前,我只有以下几点,我不知道如何从这里开始 f = open( 'ima
| A | B | C
---|----|---|---
1 | Re | Mg| 23
---|----|---|---
2 | Ra | Fe| 90
例如,Iif-else
C行的值介于20到24之间。然后,如果条件通过,它将返回单元格A1(Re)作为结果
目前,我只有以下几点,我不知道如何从这里开始
f = open( 'imageResults.csv', 'rU' )
for line in f:
cells = line.split( "," )
if(cells[2] >= 20 and cells[2] <= 24):
f.close()
您应该使用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)
输出将是:
$ python script.py
['Re', 'Mg', '23']
['Ku', 'Rt', '20']
更新:
如果在[第一]行中有一个标题,我如何使其工作
有一个csv.DictReader,就是为了这个。事实上,使用DictReader更安全,尤其是当列的顺序可能改变或者在第三列之前插入列时。在data.csv
Name,Lat,Ref
Re,Mg,23
Ra,Fe,90
Ha,Ns,50
Ku,Rt,20
那么这就是python脚本:
import csv
with open('data.csv', 'rb') as f:
for line in csv.DictReader(f):
if 20 <= int(line['Ref']) <= 24:
print(line)
导入csv
以open('data.csv','rb')作为f:
对于csv.DictReader(f)中的行:
如果20if int(cells[2])>=20和int(cells[2]),那么最好使用csv解析器,因为csv格式比人们想象的要复杂。感谢大家的欢迎,它解决了我的问题!我还有一个问题,如果让我们假设我要把一个标题(字符串)和数字放在一起,我如何让它工作?例如(从上到下),Ref>23>90>50>20@xainnnn:我在上面的答案中添加了一个处理标题的部分
Name,Lat,Ref
Re,Mg,23
Ra,Fe,90
Ha,Ns,50
Ku,Rt,20
import csv
with open('data.csv', 'rb') as f:
for line in csv.DictReader(f):
if 20 <= int(line['Ref']) <= 24:
print(line)