我了解RE的基础知识,我需要打开一个包含很多行的文件,只取数字并显示平均值。这是我可怜的尝试:
import re
try:
ufile = open(input('What file are you using? '))
except:
print('File don\'t founded.')
exit()
lnumbers = []
for line in ufile:
numbers = re.findall('([0-9.]+) ', line)
if len(numbers) > 0:
lnumbers.append(numbers)
我不知道下一步该怎么做。
答案 0 :(得分:0)
假设给定的数字永远不会从一行到另一行换行,那么对您的代码进行一点修改就可以了:
for line in ufile:
numbers = re.findall('[0-9]+(\.[0-9]+)?', line)
for number in numbers:
lnumbers.append(numbers)
if len(lnumbers) > 0:
print sum(lnumbers) / len(lnumbers)
else:
print "no numbers were found"
答案 1 :(得分:0)
您可以使用以下列表推导来解析文件中的所有数字,然后根据新列表计算平均值。
lnumbers = [float(number) for line in ufile for number in re.findall('\d+(?:\.\d*)?', line)]
print(sum(lnumbers) / len(lnumbers))
答案 2 :(得分:0)
使用map
+ sum
:
import re
from statistics import mean
try:
ufile = open(input('What file are you using? '))
except:
print('File don\'t founded.')
exit()
print(mean(sum(list(map(lambda line: list(map(int,re.findall('\d',line))),ufile)),[])))