我有一个日志文件,其中包含用逗号分隔的值的行。我需要找到列表中第二个对象> 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
”。
答案 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
这可能就是您想要的。请让我知道。