例如,我的列表是:
list_1 = [ '[1234,', '4567,', '19234,', '786222]' ]
,预期输出为:
list_1 = [1234, 4567, 19234, 786222]
答案 0 :(得分:6)
坦率地说,从中获取整数列表的最简单方法是将其作为表示列表的字符串重新组合在一起:
>>> list_1 = ['[1234,', '4567,', '19234,', '786222]']
>>> list_repr = ' '.join(list_1)
>>> list_repr
'[1234, 4567, 19234, 786222]'
然后通过ast.literal_eval
:
>>> from ast import literal_eval
>>> literal_eval(list_repr)
[1234, 4567, 19234, 786222]
如果您在{em>已经首先代表一个列表的字符串上使用list_1
方法获得split
,我相信您可以弄清楚如何缩短这个过程...
答案 1 :(得分:5)
您可以strip
个不良字符并转换为int
。
>>> [int(s.strip("[],")) for s in list_1]
[1234, 4567, 19234, 786222]
答案 2 :(得分:2)
使用Python 2:
>>> map(int, ''.join(list_1).strip('[]').split(','))
[1234, 4567, 19234, 786222]
在Python 3中map
返回一个只有懒惰评估的地图对象。要创建列表,我们需要明确。这是一件好事,更有效率和更通用:
>>> list(map(int, ''.join(list_1).strip('[]').split(',')))
[1234, 4567, 19234, 786222]
答案 3 :(得分:1)
您可以使用translate删除不需要的字符。
>>> [int(s.translate(None,"[],")) for s in list_1]
[1234, 4567, 19234, 786222]
希望这有帮助。
答案 4 :(得分:1)
如果您事先不知道“坏”字符集,您还可以过滤每个字符串中的所有数字,然后将结果转换为整数:
>>> list_1 = [ '[1234,', '4567,', '19234,', '786222]' ]
>>> [int(filter(lambda x: x.isdigit(), s)) for s in list_1]
[1234, 4567, 19234, 786222]