查找符合条件的第一行号

时间:2019-08-01 05:14:34

标签: python python-2.7 list indexing find

我有一个日志文件,其中包含用逗号分隔的值的行。我需要找到列表中第二个对象> 19的第一行的行号。问题是csv数据是字符串和数字。

我已经使用csv.reader读取了文件,因此它都是字符串。我还没有弄清楚如何将每一行中的第二个对象转换为数字并运行测试并返回行号。根据以下数据,我希望返回“ 5”

some text
date, data1, data2, data3
1,2,3,4
date2, data4, data5, data6
1,20,3,5
date3, data7, data8, data9
1,200,3.5,4.5

import csv
Input = open('C:\\pytest\\list of lists.txt', 'rb')
reader = csv.reader(Input)
for line in reader:
    print line

waldo = 19
pos = next(x for x, val in enumerate(reader) if val > waldo)
print pos

它不打印任何内容,最后一个错误行是“ StopIteration”。

2 个答案:

答案 0 :(得分:0)

以下是简单的线性搜索

line_number = 0
for array_from_csv_reader in csv_reader_fetched_arrays:
    try:
        second_obj_as_number = float(array_from_csv_reader[1])
        if second_obj_as_number > 19:
            break
    except Exception as e:
        line_number = line_number + 1
        continue
print (line_number) # <-- your answer

答案 1 :(得分:0)

类似下面的内容。

with open('C:\\pytest\\list of lists.txt', 'r') as file_handle:  
    line_count=0
    line_ = ""
    for line in file_handle: 
        line_count += 1
        line_ = line
        if int(line.split(",")[1])>19:
            break
print line_
print line_count

这可能就是您想要的。请让我知道。