我有一个字典,在我要删除的项目的开头和结尾都有空格。
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方法是什么?
答案 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'}