从列表中删除所有非数字

时间:2019-05-11 23:03:00

标签: python

从文件中读取后,我得到了一个列表列表,该列表不仅包含数字,还包含其他我想摆脱的字符。

我尝试使用re.sub函数,但这似乎不起作用

import re     


Poly_id= [['0', '[4', '8', '18', '20', '5', '0', '4]'], ['1', '[13', '16', 
'6', '11', '13]'], ['2', '[3', '1', '10', '9', '2', '15', '3]'], ['3', 
'[13', '12', '16', '13]'], ['4', '[13', '11', '17', '14', '7', '13]']]

for x in Poly_id:
    [re.sub(r'\W', '', ch) for ch in x]

这似乎并没有改变此列表中的任何内容。

我希望有一个仅包含数字作为元素的列表,以便可以将它们转换为整数

3 个答案:

答案 0 :(得分:2)

从技术上讲,我猜[]是非数字的,因此您可以执行以下操作:

[4

输出:

Poly_id = [[char for char in _list if str.isnumeric(char)] for _list in Poly_id]

如果您只想删除非数字值而不是完整的条目,则可以执行以下操作:

['0', '8', '18', '20', '5', '0']
['1', '16', '6', '11']
['2', '1', '10', '9', '2', '15']
['3', '12', '16']
['4', '11', '17', '14', '7']

输出:

Poly_id = [[''.join(char for char in substring if str.isnumeric(char)) for substring in _list] for _list in Poly_id]

答案 1 :(得分:1)

如果您想摆脱'['中的'[4'但保留'4':这里是一个解决方案:

res = [[re.sub(r'\W', '', st) for st in inlist] for inlist in Poly_id]

res是:

[
 ['0', '4', '8', '18', '20', '5', '0', '4'],
 ['1', '13', '16', '6', '11', '13'],
 ['2', '3', '1', '10', '9', '2', '15', '3'],
 ['3', '13', '12', '16', '13'],
 ['4', '13', '11', '17', '14', '7', '13']
]

答案 2 :(得分:0)

您可以使用模块“ itertools”

import itertools

list_of_lists = [[1, 2], [3, 4]]
print(list(itertools.chain(*list_of_lists)))

>>>[1, 2, 3, 4]