我正在尝试将文本文件中的数字(使用简单表达式)提取到列表中,然后对所有这些数字求和(每行可能有一对或多个数字)。
代码:
import re
file = open('test.txt', 'r')
numlist = list()
hand = file.readlines()
for num in hand:
x = re.findall('[0-9]+', num)
if len(x) <1 : continue
numlist.append(x)
print ('Num List: ', numlist)
输出:
Num List:
[['3759', '5252', '9461'], ['2795'], ['941'], ['3965', '506'], ['1345'], ['8825'], ['8652'], ['9563', '5021'], ['9716', '9439'], ['5922', '1869', '6659'], ['4931', '8288'], ['1928', '3157', '8418'], ['7019', '3206', '7153'], ['2946', '8190'], ['8822', '1769'], ['2079', '896'], ['5960', '5
044'], ['8808', '8416'], ['652', '9680', '1624'], ['2202', '9352', '341'], ['1528', '306', '355'], ['3776', '6025'], ['663', '4604', '8259'], ['1447', '3694'], ['2925'], ['9299', '61', '8768'], ['7661', '9442'], ['996', '2011', '5878'], ['3301', '4985', '932'], ['1647'], ['290'], ['9822'], ['5298',
'324'], ['9334', '3481'], ['5177', '3541'], ['42']]
预期结果: 我需要所有数字都在一个列表中,而不是在几个数组中
当我在 if 之后使用 float(),然后追加()时,只有 x(列表)中的一个值附加到 numlist
我是新手代码,所以我会感激您的帮助,谢谢。
答案 0 :(得分:2)
您应该使用extend。
,而不是使用appendappend():它基本上用于python中添加一个元素。
extend():其中extend()用于合并到列表或在一个列表中插入多个元素。
方法&#34;追加&#34;将其参数作为单个元素添加到列表中,而&#34; extend&#34;获取列表并添加其内容
答案 1 :(得分:0)
解决方案:
import re
file = open('test.txt', 'r')
hand = file.readlines()
numlist = list()
for num in hand:
x = re.findall('[0-9]+', num)
if len(x) <1 : continue
numlist.extend(x)
numlist = [int(i) for i in numlist]
sum = sum(numlist)
print ('Num List:', sum)
@omri_saadon感谢您的帮助。