Python列表理解与文本上的正则表达式

时间:2016-09-17 11:05:07

标签: python list-comprehension

我有一个文本文件,其中包含文本中的整数。行中有一个或多个整数或没有。我想用正则表达式找到这些整数并计算总和。

我设法写了代码:

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

但我也想知道列表理解版本,有人可以帮忙吗?

1 个答案:

答案 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))