Я пытаюсь добавить объект электронной почты в учетные записи тестирования json. нахожу себя немного застрявшим на этом.
в идеале я хотел бы добавить поле электронной почты к объектам testing_accounts. 1 чел.
jsondata
testing_accounts = [{'tenantName': 'hsmd1012159', 'studentName': 'stu1012159', 'studentPassword': 'asdf123!'}, {'tenantName': 'hsmd1012716', 'studentName': 'stu1012716', 'studentPassword': 'asdf123!'}, {'tenantName': 'hsmd1011234', 'studentName': 'stu1011234', 'studentPassword': 'asdf123!'}]
элемент, который я хотел бы добавить к каждому объекту json выше.
test = "[email protected]\[email protected]\[email protected]"
Другой улов: если адресов электронной почты недостаточно для соответствия арендаторам, добавьте «[email protected]».
desiredOutput = [{
'tenantName': 'hsmd1012159', 'studentName': 'stu1012159', 'studentPassword': 'asdf123!', 'email': '[email protected]'
},
{
'tenantName': 'hsmd1012716', 'studentName': 'stu1012716', 'studentPassword': 'asdf123!', 'email': '[email protected]'
},
{
'tenantName': 'hsmd1011234', 'studentName': 'stu1011234', 'studentPassword': 'asdf123!' , 'email': '[email protected]'
},
{
'tenantName': 'hsmd1011s2234', 'studentName': 'stu122011234', 'studentPassword': 'asdf123!' , 'email': 'null@null'
}
]
Где я нахожусь до сих пор ....
print(len(testing_accounts))
print(testing_accounts)
def newline(string):
listRes = list(string.split("\n"))
return listRes
def comma(string):
listRes = list(string.split(","))
return listRes
def comma_and_space(string):
listRes = list(string.split(", "))
return listRes
if '\n' in test:
test1 = newline(test)
test1 = json.dumps(test1)
print(test1)
elif ',' in test:
test1 = comma(test)
test1 = json.dumps(test1)
print(test1)
elif ', ' in test:
test1 = comma_and_space(test)
test1 = json.dumps(test1)
print(test1)
else:
print("didn't hit any of those")
print(len(test1))
print(test1)
for item in testing_accounts:
for email in test1:
item.update({'email': email})
#temp = json.loads(testing_accounts)
#temp.update({'email': test})
print(item)
любые рекомендации будут весьма признательны.
Попробуйте itertools.zip_longest
:
from itertools import zip_longest
test = "[email protected]\[email protected]\[email protected]"
for email, account in zip_longest(
test.split(), testing_accounts, fillvalue = "[email protected]"
):
account["email"] = email
print(testing_accounts)
Отпечатки:
[
{
"tenantName": "hsmd1012159",
"studentName": "stu1012159",
"studentPassword": "asdf123!",
"email": "[email protected]",
},
{
"tenantName": "hsmd1012716",
"studentName": "stu1012716",
"studentPassword": "asdf123!",
"email": "[email protected]",
},
{
"tenantName": "hsmd1011234",
"studentName": "stu1011234",
"studentPassword": "asdf123!",
"email": "[email protected]",
},
{
"tenantName": "hsmd1011s2234",
"studentName": "stu122011234",
"studentPassword": "asdf123!",
"email": "[email protected]",
},
]
@Jared Это означает, что у вас меньше электронных писем, чем учетных записей (?)
Спасибо за ответ... Traceback (последний последний вызов): файл "test.py", строка 56, в <module> account["email"] = email TypeError: объект 'str' не поддерживает назначение элементов