Python:删除字典中的空格返回' list'对象没有属性' rstrip'

时间:2018-03-06 13:05:05

标签: python dictionary strip

我有一个字典,在我要删除的项目的开头和结尾都有空格。

Alpha = {'Active': [{'Last': u' 0.023', 'Name': u' Bard1 Life Sciences Limited                                       


                ', 'Vol': u' 439,937,304', 'pc': u' 130.0', 'Change': u' 0.013', 'Stock': 'BD1'}, {'Last': u'
 0.048', 'Name': u' Patrys Ltd                                                                               

                                                                                                      ', 'Vol
': u' 60,198,817', 'pc': u' -9.4', 'Change': u' -0.005', 'Stock': 'PAB'}, {'Last': u' 0.008', 'Name': u' Ecli
pse Metals Limited.                                                                                          

                                                                              ', 'Vol': u' 41,707,516', 'pc':
 u' -33.3', 'Change': u' -0.004', 'Stock': 'EPM'}]}

我想在末尾删除Name的空格,并删除Last,Change和pc开头的空格。

当我使用{key: value.rstrip() for key, value in Alpha.items()}时,它会返回AttributeError: 'list' object has no attribute 'rstrip'。我也使用lstrip也一样。

解决错误的pythonic方法是什么?

2 个答案:

答案 0 :(得分:3)

在解决这个问题之前,你必须了解你的结构:你的开头没有带空格的字典,而是字典字符串→字典列表,其值是一些带有字符串的字符串。< / p>

听起来很复杂,而且(有点)。但这就是为什么你的方法不起作用的原因。

我会递归地做:

def my_strip(item):
    if isinstance(item, str) or isinstance(item, unicode):
        return item.rstrip()
    if isinstance(item, list):
        return [my_strip(i) for i in item]
    if isinstance(item, dict):
        return {k: my_strip(v) for k, v in item.items()}
    return item

这样,只要你做了

,你的所有等级都会得到适当的处理

答案 1 :(得分:1)

您错过了Alpha['Active']内的列表。

数据以下列方式维护:

Alpha = dict(key: list[ dict(key, value), dict(key, value), dict(key, value)])

我们想要删除列表中实际值的左右空格。

您可以使用:

for index, itemdict in enumerate(Alpha['Active']):
    Alpha['Active'][index] = {key: value.strip() for key, value in itemdict.items()}

最后,您可以在不使用空格的情况下查看数据:

# to print the data
for item in Alpha['Active']:
    print(item)

结果:

{'Last': '0.023', 'Name': 'Bard1 Life Sciences Limited', 'Vol': '439,937,304', 'pc': '130.0', 'Change': '0.013', 'Stock': 'BD1'}
{'Last': '0.048', 'Name': 'Patrys Ltd', 'Vol': '60,198,817', 'pc': '-9.4', 'Change': '-0.005', 'Stock': 'PAB'}
{'Last': '0.008', 'Name': 'Ecli\npse Metals Limited.', 'Vol': '41,707,516', 'pc': '-33.3', 'Change': '-0.004', 'Stock': 'EPM'}