Python 用re计算文本文件中的所有数字?

Python 用re计算文本文件中的所有数字?,python,regex,Python,Regex,我与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)

我与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)

我不知道下一步该怎么办。

假设给定的数字永远不会从一行换行到下一行,那么稍微修改一下代码就可以了:

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"

您可以使用以下列表理解来解析文件中的所有数字,然后根据新列表计算平均值

lnumbers = [float(number) for line in ufile for number in re.findall('\d+(?:\.\d*)?', line)]
print(sum(lnumbers) / len(lnumbers))

使用
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)),[])))

@我很好。我修好了。