从元组中移除空格
我有这样一个列表:
[('', '', '654', 'Tom', '- Jerry', '', '', ''),
('', '', '', '', '', '756', 'X-Man -', 'Batman'),
('453', 'Hulk - Superman', '', '', '', '', '', '')]
我该怎么去掉那些不需要的(主要是外面的)字符,让它看起来像这样:
[('654', 'Tom' , '- Jerry'),
('756', 'X-man' -', Batman'),
('435','Hulk - Superman')]
这是一个元组,所以我想我不能用 .strip()
方法。
谢谢。
5 个回答
4
如果你想去掉空字符串,我建议你使用一个过滤器:
In [4]: myList = [('', '', '654', 'Tom', '- Jerry', '', '', ''), ('', '', '', '', '', '756', 'X-Man -', 'Batman'), ('453', 'Hulk - Superman', '', '', '', '', '', '')]
In [5]: [tuple(itertools.ifilter(None, t)) for t in myList]
Out[5]:
[('654', 'Tom', '- Jerry'),
('756', 'X-Man -', 'Batman'),
('453', 'Hulk - Superman')]
6
使用 filter()
函数,它默认会去掉那些“空的”(也就是假值)值:
[tuple(filter(None, tp)) for tp in inputlist]
示例:
>>> [tuple(filter(None, tp)) for tp in inputlist]
[('654', 'Tom', '- Jerry'), ('756', 'X-Man -', 'Batman'), ('453', 'Hulk - Superman')]
6
试试这个:
>>> t = [('', '', '654', 'Tom', '- Jerry', '', '', ''),
('', '', '', '', '', '756', 'X-Man -', 'Batman'),
('453', 'Hulk - Superman', '', '', '', '', '', '')]
>>> [tuple(filter(None, i)) for i in t]
[('654', 'Tom', '- Jerry'), ('756', 'X-Man -', 'Batman'), ('453', 'Hulk - Superman')]
filter(None, i)
会把 i
中的所有“假”的值去掉,只留下那些非空的字符串。
0
、False
、None
以及任何空的容器(比如 []
、''
等)都是“假”的值。