Python 3.x - 在CSV文件中搜索特定值,然后打印该行

时间:2018-01-31 21:51:47

标签: python csv sorting search

我的任务是读取csv文件,找到第三列中的最大值,然后存储具有该最大值的行。

到目前为止,我已经能够读取csv文件并找到最大值,但我无法搜索该值并获取行。

import csv

with open('file_name.csv', 'r', newline='') as f:
    reader = csv.DictReader(f)
    ThirdCol = []

#This block takes the 3rd column in the file and makes it a list. After sorting, the last value is the "largest" value.
    for col in reader:
        ThirdCol.append(col['colName']) 
        ThirdCol.sort()
        Largest = ThirdCol[-1]

#This block attempts to take the found largest value and print rows with their third columns matching the largest value.
    for row in reader:
        if Largest == row[2]:
            print (row)

我不确定这里有什么问题,我的笔记本没有输出或错误信息。我已将问题缩小到" row"我的代码部分。我的目的是搜索行中的[2]元素,它应该是第三列,并打印行[2]匹配我确定为前一个for循环中最大值的行。

关于stackoverflow的其他问题,我也认为我的问题可能与使用" DictReader"以及如何在第一个for循环中我使用字符串进行搜索而第二个循环用于循环我使用整数。

我对python和编程很新。我只获得了documentation for CSV的链接,我们只介绍了基本的数据类型,函数和循环。我感谢任何人都可以给我的方向,谢谢。

1 个答案:

答案 0 :(得分:0)

import csv

with open('file_name.csv', 'r', newline='') as f:
    reader = csv.reader(f)
    # Saving CSV data into a list
    data = [x for x in reader]

# Get maximum value from list using max(list) function
max_thirdcol_val = max([x[2] for x in data])

# Check row by row for 3 col value to max with Max value
for row in data:
    if row[2] == max_thircol_val:
        print(row)