对于以下字典,
a1 = {'a2':{'name':'mic\xa0\xa0', 'age':'12\xa0\xa0', 'college':True, 'contact':''},
'a3':{'name':'sen\xa0\xa0', 'age':'23\xa0\xa0','college':True,'contact':''}}
当循环字典并执行某些操作使bool
对象无法迭代时,如果从字典中删除布尔字段(college
),那么空字段(nonetype
({ {1}})对象不可迭代)
contact
任何帮助都将不胜感激。
答案 0 :(得分:2)
只需进行一些小的更改即可使用isinstance()
检查v2
是否为字符串。如果是字符串,则迭代并执行操作。否则,保持不变。
示例:
def t1():
a4 = {
k : {
k2: ''.join([i if 32 < ord(i) < 126 else " " for i in v2])
if isinstance(v2, str) else v2 for k2, v2 in v.items()
}
for k, v in a1.items()
}
return a4
a5 = t1()
print(a5)
输出:
{
"a3": {
"age": "23 ",
"contact": "",
"college": True,
"name": "sen "
},
"a2": {
"age": "12 ",
"contact": "",
"college": True,
"name": "mic "
}
}
您可能还想在.strip()
的结果中加join()
以删除前导/尾随空格。