练习2:编写程序以查找以下形式的行:
New Revision: 39772
使用正则表达式和findall()
方法从每一行中提取数字。
计算数字的平均值并打印出平均值。
输入文件为“ mbox-short.txt”。
import re
fname=input("enter the file name:")
fhandle=open(fname)
total=0
count=0
for x in fhandle:
y=re.findall("^New Revision:(\s [0-9]*) ",x)
total=total+y
count=count+1
print(y)
print("total and average is:",total,total/count)
任何人都可以建议如何将列表中的所有元素转换为浮点型
答案 0 :(得分:1)
您的正则表达式结尾处有一个' '
,这就是为什么它没找到任何东西的原因。
findall()
开头的模式只会返回1次(或0次)命中-因为以^
开头。
import re
fname=input("enter the file name:")
fhandle=open(fname)
total=0.0
count=0
for x in fhandle:
y=re.findall(r"^New Revision:(\s*[0-9]*)",x) # 0 or 1 hit
if y:
total += float(y [0] ) # to float if found
count += 1
print("total and average is:",total,total/count)
使用文本的示例:
t = """New Revision: 129
New Revision: 129
New Revision: 129
New Revision: 129
New Revision: 129
"""
import re
total=0.0
count=0
for x in t.splitlines():
y=re.findall("^New Revision:(\s*[0-9]*)",x)
if y:
total += float(y [0] )
count += 1
print(y)
print("total and average is:",total,total/count)
输出:
total and average is: 645.0 129.0