提取数字然后使用正则表达式求和

时间:2017-06-09 20:20:21

标签: python regex list sum integer

我尝试使用re.findall()从文本文件中提取所有数字,并使用for循环计算总和。我最初获得的是列表列表,因此我将它们放在一个整体列表中,并尝试将每个数字转换为整数。但我得到的答案与提供的答案不同。有人可以看看我的代码,看看我是否忽略了什么?链接到文本文件是:http://python-data.dr-chuck.net/regex_sum_376410.txt

handle = open('regex_sum.txt','r')
import re

lst = list()
for line in handle:
    b = re.findall('[0-9]+', line)
    if b:
        lst.append(b)

total = 0

for numbers in lst:
    for num in numbers:
       c = int(num)
       total = total + c
print total
P.S我确实弄明白为什么我得到了不同的答案。我的代码在输出的开头提取了一些不相关的数字' 0,8,4,376410'这在文本文件中不存在。有人知道如何修改我的代码,这些数字不会再出现吗?

1 个答案:

答案 0 :(得分:1)

因此,如果预期答案应以629结尾,那么您应该将append更改为extend(请参阅difference)。在您进行扩展的同时,您也可以将调查结果转换为整数。然后,您可以使用默认的sum函数。

import re

handle = open('regex_sum.txt','r')

lst = []
for line in handle:
    b = re.findall('\d+', line)
    if b:
        lst.extend([int(x) for x in b])
        # this also works if you want to use append
        #for x in b:
        #    lst.append(int(x))

print(sum(lst))
# outputs: 437629
相关问题