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

Python: remove white spaces in dictionary return 'list' object has no attribute 'rstrip'

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

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()} 时,它 return AttributeError: 'list' object has no attribute 'rstrip'。我用lstrip也是一样。

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

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

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

我会递归地做:

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

这样,只要您这样做,您的所有关卡都会得到适当的处理

您错过了 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'}