我正在尝试使用将以下内容dict转换为JSON json.dumps:
dict
json.dumps
{ 'post_engaged': 36, 'post_impressions': 491, 'post_story': 23, 'comment_count': 6, 'created_time': '03:02 AM, Sep 30, 2012', 'message': 'Specialities of Shaktis and Pandavas. \n While having power, why there isn\\u2019t', < built - in function id > : '471662059541196', 'status_type': 'status', 'likes_count': 22 } { 'post_engaged': 24, 'text': '30 Sept 2012 Avyakt Murlli ( Dual Voice )', 'post_story': 8, 'comment_count': 3, 'link': 'http:\\/\\/www.youtube.com\\/watch?v=VGmFj8g7JFA&feature=youtube_gdata_player', 'post_impressions': 307, 'created_time': '03:04 AM, Sep 30, 2012', 'message': 'Not available', < built - in function id > : '529439300404155', 'status_type': 'video', 'likes_count': 7 } { 'post_engaged': 37, 'post_impressions': 447, 'post_story': 22, 'comment_count': 4, 'created_time': '03:11 AM, Sep 30, 2012', 'message': '30-09-12 \\u092a\\u094d\\u0930\\u093e\\u0924:\\u092e\\u0941\\u0930\\u0932\\u0940 \\u0913\\u0', < built - in function id > : '471643246209744', 'status_type': 'status', 'likes_count': 20 } { 'post_engaged': 36, 'post_impressions': 423, 'post_story': 22, 'comment_count': 0, 'created_time': '03:04 AM, Sep 29, 2012', 'message': 'Essence: Sweet children, whenever you have time, earn the true income. Staying i', < built - in function id > : '471274672913268', 'status_type': 'status', 'likes_count': 20 } { 'post_engaged': 16, 'text': 'Essence Of Murli 29-09-2012', 'post_story': 5, 'comment_count': 2, 'link': 'http:\\/\\/www.youtube.com\\/watch?v=i6OgmbRsJpg&feature=youtube_gdata_player', 'post_impressions': 291, 'created_time': '03:04 AM, Sep 29, 2012', 'message': 'Not available', < built - in function id > : '213046588825668', 'status_type': 'video', 'likes_count': 5 }
但这导致我
TypeError : keys must be a string
该错误很可能是由于dict包含,keys例如:
keys
<built-in function id>: '213046588825668'
有人可以指导我,如何从字典中删除这些元素?
您可以尝试像这样清理它:
for key in mydict.keys(): if type(key) is not str: try: mydict[str(key)] = mydict[key] except: try: mydict[repr(key)] = mydict[key] except: pass del mydict[key]
这将尝试将不是字符串的任何键转换为字符串。任何无法转换为字符串或不能表示为字符串的键都将被删除。