我有一个文本文件,其中包含文本中的整数。行中有一个或多个整数或没有。我想用正则表达式找到这些整数并计算总和。
我设法写了代码:
import re
doc = raw_input("File Name:")
text = open(doc)
lst = list()
total = 0
for line in text:
nums = re.findall("[0-9]+", line)
if len(nums) == 0:
continue
for num in nums:
num = int(num)
total += num
print total
但我也想知道列表理解版本,有人可以帮忙吗?
答案 0 :(得分:1)
因为你想在找到它们之后计算数字的总和最好在re.finditer()
中使用sum()
的生成器表达式。另外如果文件的大小不是很大,你最好一次阅读,而不是一次一行。
import re
doc = raw_input("File Name:")
with open(doc) as f:
text = f.read()
total = sum(int(g.group(0)) for g in re.finditer(r'\d+', text))