我将多个字典附加到一个列表中,然后将其转换为 json。它给了我多个列表,每个列表添加一个额外的结果。我想在单个列表数组中显示整个输出。
mail_output = []
for i in mail_ids.split():
result, msg_data = mail.fetch(i, '(RFC822)')
for each_response in msg_data:
if isinstance(each_response, tuple):
msg = email.message_from_string(each_response[1])
items_list = msg.items()
dict_items = OrderedDict(items_list)
email_body = ''
if msg.is_multipart():
for part in msg.walk():
case...
dict_items.update({'Body': email_body})
mail_output.append(dict_items)
print(json.dumps(mail_output, indent=4, sort_keys=True))
我得到的输出:
[
{
"Body": "Forwarded.\r\n\r\nFrom: User
"Subject": "Fw: Tuesday",
"To": "<reciever@gmail.com>"
}
]
[
{
"Body": "Forwarded.\r\n\r\nFrom: User
"Subject": "Fw: Tuesday",
"To": "<reciever@gmail.com>"
},
{
"Body": "Urgent Message.\r\n\r\nFrom: Alerts
"Subject": "Alerts",
"To": "<reciever@gmail.com>"
}
]
预期输出:
[
{
"Body": "Forwarded.\r\n\r\nFrom: User
"Subject": "Fw: Tuesday",
"To": "<reciever@gmail.com>"
},
{
"Body": "Urgent Message.\r\n\r\nFrom: Alerts
"Subject": "Alerts",
"To": "<reciever@gmail.com>"
}
.....
]
最佳答案
mail_output = []
for i in mail_ids.split():
result, msg_data = mail.fetch(i, '(RFC822)')
for each_response in msg_data:
if isinstance(each_response, tuple):
msg = email.message_from_string(each_response[1])
items_list = msg.items()
dict_items = OrderedDict(items_list)
email_body = ''
if msg.is_multipart():
for part in msg.walk():
case...
dict_items.update({'Body': email_body})
mail_output.append(dict_items)
print(json.dumps(mail_output, indent=4, sort_keys=True))
您只是遇到缩进问题..请参阅此处的最后一行..这是我更改的唯一部分。否则,脚本将为 for i in mail_ids.split()
的每次迭代打印。
关于python - 将多个字典附加到列表并转储到 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56186222/