删除字典值python中的空格

时间:2021-06-19 21:50:31

标签: python dictionary

我正在读取来自外包的数据。数据有“名称”和“带警告的值”,所以我把它们放在字典中

d[data[i:i+6]] = data[i+8:i+17], data[i+25:i+36]

因此最后我的字典为;

{'GPT-P ': ('169      ', 'H          '), 'GOT-P ': ('47       ', '           '), .....

如上所示,键和值都可能有不必要的空格。 我能够克服键中的空格;

d = {x.replace(' ',''): v
     for x, v in d.items()}

但似乎无法管理类似的值。我尝试使用 d.values() 但它修剪了键名并且也只适用于其中 1 个值。

你能帮我理解如何删除几个的空间(在这种特殊情况下为2个值)并最终得到类似的东西;

{'GPT-P': ('169', 'H'), 'GOT-P ': ('47', ''), .....

谢谢。保持安全和健康

2 个答案:

答案 0 :(得分:2)

给定:

DoT={'GPT-P ': ('169      ', 'H          '), 'GOT-P ': ('47       ', '           ')}

由于您将字符串元组作为值,您需要将 .strip() 应用于元组中的每个字符串:

>>> tuple(e.strip() for e in ('47       ', '           '))
('47', '')

将其应用于字典理解中的每个键、值,然后您就可以了:

>>> {k.strip():tuple(e.strip() for e in t) for k,t in DoT.items()}
{'GPT-P': ('169', 'H'), 'GOT-P': ('47', '')}

您尝试使用 .replace(' ','')。这将替换所有空格:

>>> '     1    2    3    '.replace(' ','')
'123'

使用 .strips() 之一更为典型:

>>> '     1    2    3    '.strip()
'1    2    3'
>>> '     1    2    3    '.lstrip()
'1    2    3    '
>>> '     1    2    3    '.rstrip()
'     1    2    3'

您可以在我上面使用的推导式中使用 .replace 或任何 .strips()

答案 1 :(得分:2)

您还需要在 v 值中进行空格替换,但是
在您的情况下,您的字典中的值似乎是元组

我猜您想删除每个元组的所有元素中的空格,因此您需要在此处进行第二次迭代。你可以这样做:

d = {'GPT-P ': ('169      ', 'H          '), 'GOT-P ': ('47       ', '           ')}

{x.replace(' ', ''): tuple(w.replace(' ', '') for w in v) for x, v in d.items()}

哪个返回:

{'GPT-P': ('169', 'H'), 'GOT-P': ('47', '')}

请注意,字典推导式中存在列表(或元组)推导式 tuple(w.replace(' ', '') for w in v)

相关问题