我得到的数据看起来像这样(如下),我想使用 python 编写一个逐行的 while 循环,只要第一列中的单词没有改变脚本,检查第三列,如果第三列的值是最小值,则返回第三列的值和同一行的第二列的值。
ZYG11B 0000 1
ZYG11B 0100 2
ZYG11B 0001 3
ZYG11A 0001000000000000 1
ZYG11A 0011000000000000 2
ZYG11A 0000000000000000 3
ZYG11A 0011000001000000 4
ZYG11A 0001000100000000 5
ZYG11A 0011000001000100 6
ZYG11A 0001000001000000 7
ZYG11A 0001000001000100 8
ZYG11A 0000000100000000 9
ZYG11A 0011010000000000 10
ZYG11A 0001010000000000 11
ZYG11A 0011000000010000 12
ZYG11A 0000000000000001 13
ZYG11A 0001000000000001 14
ZYG11A 0000010000000000 15
ZYG11A 0001000000010000 16
ZYG11A 0000110000000000 17
ZYG11A 0101000000000000 18
ZYG11A 0100000000000000 19
ZYG11A 0011010001000000 20
ZYG11A 0011000011000000 21
ZYG11A 0011110000000000 22
ZYG11A 0011010001000100 23
ZYG11A 0011000011001100 24
ZYG11A 0011000011000100 25
ZYG11A 0001000101000100 26
ZYG11A 0001000000000100 27
ZYG11A 0000110000000001 28
ZYG11A 0000001100000000 29
答案 0 :(得分:0)
答案 1 :(得分:0)
如果下面的 Python 2.7 代码不能解决您的问题,它至少应该为您提供一个起点:
def ret_fields(file1):
prev_category = ''
min_field = 0
ret_list = []
line = file1.readline()
while (line):
[category,zero_one,field] = line.split()
if (prev_category == ''):
prev_category = category
min_field = field
if (category != prev_category):
min_field = field
if (int(field) <= int(min_field)):
ret_list.append([category,zero_one,field])
min_field = field
prev_category = category
line = file1.readline()
return ret_list
f = open("fields.txt")
try:
l = ret_fields(f)
for i in l:
print i
finally:
f.close()
用“fields.txt”文件如下:
ZYG11B 0000 1
ZYG11B 0100 2
ZYG11B 0001 3
ZYG11B 1000 0
ZYG11A 0001000000000000 1
ZYG11A 0011000000000000 2
ZYG11A 0000000000000000 3
ZYG11A 0011000001000000 4
ZYG11A 0001000100000000 5
ZYG11A 0011000001000100 6
ZYG11A 0001000001000000 7
ZYG11A 0001000001000100 8
ZYG11A 0000000100000000 9
ZYG11A 0011010000000000 10
ZYG11A 0001010000000000 11
ZYG11A 0011000000010000 12
ZYG11A 0000000000000001 13
ZYG11A 0001000000000001 14
ZYG11A 0000010000000000 15
ZYG11A 0001000000010000 16
ZYG11A 0000110000000000 17
ZYG11A 0000110000000000 -1
ZYG11A 0101000000000000 18
ZYG11A 0100000000000000 19
ZYG11A 0011010001000000 20
ZYG11A 0011000011000000 21
ZYG11A 0011110000000000 22
ZYG11A 0011010001000100 23
ZYG11A 0011000011001100 24
ZYG11A 0011000011000100 25
ZYG11A 0001000101000100 26
ZYG11A 0001000000000100 27
ZYG11A 0000110000000001 28
ZYG11A 0000001100000000 29
ZYG11A 1001000000000000 0
输出为:
$ python min_fields.py
['ZYG11B', '0000', '1']
['ZYG11B', '1000', '0']
['ZYG11A', '0001000000000000', '1']
['ZYG11A', '0000110000000000', '-1']
$