我从大文件中的句子中提取数字。例句(在文件finalsum.txt
中):
the cat in the 42 hat and the cow 1772 jumps over the moon.
然后我使用正则表达式创建一个列表,我想在整个文件中加入1772 + 42,创建所有数字的最终总和。
这是我目前的代码:
import re
import string
fname = raw_input('Enter file name: ')
try:
if len(fname) < 1: fname = "finalsum.txt"
handle = open(fname, 'r')
except:
print 'Cannot open file:', fname
counts = dict()
numlist = list()
for line in handle:
line = line.rstrip()
x = re.findall('([0-9]+)', line)
if len(x) > 0:
result = map(int, x)
numlist.append(result)
print numlist
我知道这段代码可以用线条理解写成两行,但我只是在学习。谢谢!
答案 0 :(得分:0)
检查一下:
import re
line = 'the cat in the 42 hat and the cow 1772 jumps over the moon 11 11 11'
y = re.findall('([0-9]+)', line)
print sum([int(z) for z in y])
它不会创建嵌套列表,而是在将其转换为整数后添加给定列表中的所有值。您可以管理一个临时变量,该变量将存储最终总和,并将当前行中所有整数的总和添加到此临时变量中。
像这样:
answer = 0
for line in handle:
line = line.rstrip()
x = re.findall('([0-9]+)', line)
if len(x) > 0:
answer += sum([int(z) for z in x])
print answer
答案 1 :(得分:0)
您不应该附加列表,而是使用+
运算符加入列表。
for line in handle:
line = line.rstrip()
x = re.findall('([0-9]+)', line)
if len(x) > 0:
result = map(int, x)
numlist+=result
#numlist.append(result)
print numlist
print sum(numlist)
<强>插图:强>
>>> a = [1,2]
>>> b = [2,3]
>>> c = [4,5]
>>> a.append(b)
>>> a
[1, 2, [2, 3]]
>>> print b + c
[2, 3, 4, 5]
如您所见,append()
在+
加入两个列表的末尾追加列表对象。