Python 用re计算文本文件中的所有数字?
我与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)
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)),[])))
@我很好。我修好了。