我需要从.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的新手,已经为数小时的努力而努力。有人可以帮我解决这个问题吗?
答案 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