我尝试使用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'这在文本文件中不存在。有人知道如何修改我的代码,这些数字不会再出现吗?
答案 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