我编写了代码,但是,它只找到该行中的第一个数字,这让我有些困惑。因此,如果只有2个或多个数字等于1,那我在做什么错呢?我是初学者。
import re
fhand = open('text2.txt','r')
numlist = list()
total = 0
for line in fhand:
line = line.rstrip()
numbers = re.findall(r'[0-9]+', line)
if len(numbers) < 1: continue
for element in numbers :
num = float(numbers[0])
if num not in numlist:
numlist.append(num)
else : continue
sumlist = sum(numlist)
print(numlist)
print(sumlist)
http://py4e-data.dr-chuck.net/regex_sum_228867.txt是我正在使用的文本文件,总和为191882,结果应该更大,因为我的文本正在读取一行中唯一的第一个数字。干杯们,我将不胜感激
答案 0 :(得分:0)
在已经回答了melpomene的评论中,但是如果您需要查看,请将代码更改为
for element in numbers :
num = float(element)
答案 1 :(得分:0)
如何(使用re.M)传递多行标志。
with open('text2.txt') as f:
s = sum(map(float,re.findall(r'[0-9]+', f.read(), re.M)))
print(s)
返回:
425922.0