从元组中移除空格

3 投票
5 回答
4814 浏览
提问于 2025-04-17 18:29

我有这样一个列表:

[('', '', '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 中的所有“假”的值去掉,只留下那些非空的字符串。


0FalseNone 以及任何空的容器(比如 []'' 等)都是“假”的值。

撰写回答