从文件中读取后,我得到了一个列表列表,该列表不仅包含数字,还包含其他我想摆脱的字符。
我尝试使用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]
这似乎并没有改变此列表中的任何内容。
我希望有一个仅包含数字作为元素的列表,以便可以将它们转换为整数
答案 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]