Python:使用简单表达式从文本中提取数字并将它们附加到列表中

时间:2017-01-30 08:30:19

标签: python regex python-3.x

我正在尝试将文本文件中的数字(使用简单表达式)提取到列表中,然后对所有这些数字求和(每行可能有一对或多个数字)。

代码:

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

我是新手代码,所以我会感激您的帮助,谢谢

2 个答案:

答案 0 :(得分:2)

您应该使用extend。

,而不是使用append

append():它基本上用于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感谢您的帮助。