繁体   English   中英

如何从字符串列表中删除未使用的字符

[英]How to remove unused characters from a list of strings

例如,我的清单是:

list_1 =  [ '[1234,', '4567,', '19234,', '786222]' ]

预期输出是:

list_1 = [1234, 4567, 19234, 786222]

坦率地说,从中获取整数列表的最简单方法是将其作为表示列表的字符串重新组合在一起:

>>> 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]

如果您通过在已经表示列表的字符串上使用split方法获得list_1的可能事件,我相信您可以弄清楚如何缩短这个过程......

您可以strip坏字符并转换为int

>>> [int(s.strip("[],")) for s in list_1]
[1234, 4567, 19234, 786222]

使用 Python 2:

>>> map(int, ''.join(list_1).strip('[]').split(','))
[1234, 4567, 19234, 786222]

在 Python 3 map返回一个 map 对象,它只会懒惰地计算。 要创建列表,我们需要明确。 这是一件好事,更高效和通用:

>>> list(map(int, ''.join(list_1).strip('[]').split(',')))
[1234, 4567, 19234, 786222]

您可以使用翻译来删除不需要的字符。

>>> [int(s.translate(None,"[],")) for s in list_1]
[1234, 4567, 19234, 786222]

希望这可以帮助。

如果您不知道前面的“坏”字符集,您还可以过滤每个字符串中的所有数字,然后将结果转换为整数:

>>> list_1 =  [ '[1234,', '4567,', '19234,', '786222]' ]
>>> [int(filter(lambda x: x.isdigit(), s)) for s in list_1]
[1234, 4567, 19234, 786222]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM