如何获得完整的数字列表(而不是仅最后一行)?

时间:2019-06-18 18:34:43

标签: python

我需要从.txt文件中提取数字列表,以便可以计算平均价格。该文件如下所示:

Cola__________________3.5 2.9 3.6

Fanta_________________3.4 2.3 3.2

Pepsi_________________3.5 2.9 3.4

我想到了以下代码:

def get_numbers(file):
    infile = open('costs.txt', 'r')
    numbers = []
    for lines in infile:
        numbers = (lines[22:])
    infile.close()
    return numbers 

但是,这仅显示价格的最后一行。我需要获取所有行的价格,以便可以计算每种产品的平均价格。

我是Python的新手,已经为数小时的努力而努力。有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

在这一行中,您正在写数字变量

numbers = (lines[22:])

将其更改为:

numbers.append(lines[22:])

答案 1 :(得分:0)

更灵活的方式:

import re

with open('costs.txt', 'r') as f:
    pat = re.compile(r'^([A-Z][^_]+)_*(\d+.+\d+$)')
    for line in f:
        line = line.strip()
        if line:
            product, numbers = pat.search(line).groups()
            numbers = numbers.split()
            print('Product: {}. Avg: {:.2f}'
                  .format(product, sum(map(float, numbers)) / len(numbers)))

示例输出:

Product: Cola. Avg: 3.33
Product: Fanta. Avg: 2.97
Product: Pepsi. Avg: 3.27