Python - 在文本文件中搜索最富有的客户

时间:2013-12-17 01:38:00

标签: python file file-io python-3.x

我正在编写一些与我编写的代码有关的问题。我试图在银行余额最大的文件中找到客户。文本文件的示例是:

12345,约翰,DOE,300.00,1998-01-30

23456,简,DOE,1200.50,1998-02-20

在这种情况下,Jane Doe拥有最大的余额,我想打印她的整个文件/行。我怎么能这样做?这就是我到目前为止所拥有的:

def get_best_customer(customer_file):

    customer_file.seek(0)
    richest = 0
    customer_info = []

    for line in customer_file:
        line = customer_file.readline().strip()
        balance = line.split(',')
        if balance > richest:
            customer_info.append(balance)

    return customer_info

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

您可以定义一个“键”功能,该功能需要一行并返回货币字段。然后max可以直接使用

def get_best_customer(customer_file):

    customer_file.seek(0)

    def get_money(line):
        return float(line.split(',')[3])

    print(max(customer_file, key=get_money))

答案 1 :(得分:1)

line.split(',')返回列表字符串 - > ['23456', 'Jane', 'Doe', '1200.50', '1998-02-20']。然后,您需要转换您感兴趣的字段:

line = customer_file.readline().strip()
data = line.split(',')
balance = float(data[3])

这应该让你去。您仍然需要设置richest,进行比较,可能只需将customer_info设置为data,而不是附加到它。

答案 2 :(得分:0)

Gnibbler的回答可以这样写,我想:

def get_best_customer(customer_file):

    with open(customer_file, "r") as f:
        return max(f, key=(lambda l: float(l.strip().split(",")[3])))