【发布时间】:2014-10-03 07:11:34
【问题描述】:
您好,我想过滤掉第二列(十六进制)值为 80 或 81 的行,并过滤掉第二列为 0 的行,前提是它低于第二列有 81 的行专栏:
sample.csv:
Delta,Hex,Type,Time
0,81,DTE,10 pm
1,0,DTE,10 pm
0,01,DTE,10 pm
1,1c,DTE,9 pm
1,0,DTE,10 pm
0,1d,DTE,10 pm
1,0,DTE,10 pm
所以这是我编写的脚本,它在第二列(十六进制)中过滤掉具有值 80 81 和 0 的行。
Script.py:
import csv
with open('sample.csv', 'r') as f:
rows=csv.DictReader(f, fieldnames=None,restkey=None,restval=None,dialect='excel',delimiter=",")
filtered_rows=filter(lambda p:'80' != p['Hex'] and '81' != p['Hex'] and '0' != p['Hex'], rows)
for i in filtered_rows :
print (i['Hex'])
因此它会过滤掉第二列中包含0 的所有行。
上述脚本的当前输出:
01
1c
1d
但我不想过滤第二列中包含0 的行,如果它不低于第二列中包含81 的行:
预期输出:
01
1c
0
1d
0
【问题讨论】:
标签: python csv python-3.x