gpt4 book ai didi

python - 从许多文本文件中读取数字并对它们进行平均 Python

转载 作者:太空宇宙 更新时间:2023-11-04 08:01:01 29 4
gpt4 key购买 nike

我刚开始使用 python,我有大约 6000 个 .txt 文件,每个文件在一列中包含几个数字,例如:

文件1.txt:

2

43

78

文件2.txt:

98

12

    and so on

我想读取它们并将它们存储在一个数组中并计算其平均值。(2,43,78,98,12..) 的平均值,即所有文件中的所有数字均应为 1当我读取和存储它们时,它们看起来像:

['2, 43, 78', '98, 12',..]

...(我去掉了'\n')但是当我使用 ave = sum(a)\float(len(a)) 时,我得到了一个错误。我究竟做错了什么?有什么我错过的或其他方法吗?

代码:

import fnmatch
import os

rootPath = 'D:/Data'
pattern = '*.txt'
all_data = []
for root, dirs, files in os.walk(rootPath):
for filename in fnmatch.filter(files, pattern):
#print( filename )
name = os.path.join(root, filename)
str = open(name, 'r').read()
#print str
all_data.append(str)
a=[item.replace('\n', ' ') for item in all_data]
#print a
for val in a:
values = map(float, val.split(", "))
ave = sum(values)/len(values)
print ave

我得到错误:

invalid literal for float()

最佳答案

sum("abc") 未定义。 sum("2, 43") 也不是。 sum 仅适用于数字类型。

您需要先拆分行并将值转换为数值(我在这里使用了float,因为这样sum 将是一个float,因此无需将 len 转换为 float):

rows = ['2 43 78', '98 12']
total_sum = total_len = 0
for row in rows:
values = map(float, row.split())
total_sum += sum(values)
total_len += len(values)
print total_sum/total_len

对于 Python 3.x,将 print avg 替换为 print(avg) 并在 map 周围添加一个 list() ,否则 len 没有为它定义。

这类似于@VadimKhis answer ,但避免了列表加法,而是只进行整数加法。

关于python - 从许多文本文件中读取数字并对它们进行平均 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40264904/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com