Мне нужно преобразовать файл data.csv в файл "ExpectedJsonFile.json
", используя скрипт Python, который указан ниже. Но я не могу этого достичь. Сценарий Python "csvjs.py
" указан ниже.
import pandas as pd
from itertools import groupby
from collections import OrderedDict
import json
df = pd.read_csv('data8.csv', dtype={
"Source" : str,
"Template": str,
"ConfigurationSetName": str,
})
results = []
for (Source, Template, ConfigurationSetName), bag in df.groupby (["Source", "Template", "ConfigurationSetName"]):
contents_df = bag.drop(["Source", "Template", "ConfigurationSetName"], axis=1)
Destinations = [OrderedDict(row) for i,row in contents_df.iterrows()]
results.append(OrderedDict([("Source", Source),
("Template", Template),
("ConfigurationSetName", ConfigurationSetName),
("Destinations", Destinations)]))
print json.dumps(results[0], indent=4)
with open('ExpectedJsonFile.json', 'w') as outfile:
outfile.write(json.dumps(results[0], indent=4))
данные в data.csv
выглядят как показано ниже.
Source,Template,ConfigurationSetName,ToAddresses,ReplacementTemplateData
demo@example.com,MyTemplate,noreply,customer1@gmail.com,customer1
demo@example.com,MyTemplate,noreply,customer2@gmail.com,customer2
Выходные данные как показано ниже, когда я запускаю "python csvjs.py
"
{
"Source": "demo@example.com",
"Template": "MyTemplate",
"ConfigurationSetName": "noreply",
"Destinations": [
{
"ToAddresses": "customer1@gmail.com",
"ReplacementTemplateData": "customer"
},
{
"ToAddresses": "customer2@gmail.com",
"ReplacementTemplateData": "customer2"
}
]
}
Но мой ожидаемый результат такой, как показано ниже
{
"Source":"demo@example.com",
"Template":"MyTemplate",
"ConfigurationSetName": "noreply",
"Destinations":[
{
"Destination":{
"ToAddresses":[
"customer1@gmail.com"
]
},
"ReplacementTemplateData":"{ \"name\":\"customer1\" }"
},
{
"Destination":{
"ToAddresses":[
"customer2@gmail.com"
]
},
"ReplacementTemplateData":"{ \"name\":\"customer2\" }"
},
{
"Destination":{
"ToAddresses":[
"customer3@gmail.com"
]
},
"ReplacementTemplateData":"{}"
}
],
"DefaultTemplateData":"{ \"name\":\"friend\" }"
}
Мой шаблон выглядит ниже
{
"Template": {
"TemplateName": "MyTemplate",
"SubjectPart": "Greetings, {{Name}}!",
"HtmlPart": "<h1>Hello {{Name}},</h1><p>Your favorite animal is cat.</p>",
"TextPart": "Dear {{Name}},\r\nYour favorite animal is cat."
}
}