I can build the json result with this code.
MY code:
import csv
import json
from os import sep
with open('tran_test.csv') as file:
    dict_input = csv.reader(file, delimiter='|')
    next(dict_input, None)
    output = []
    for line in dict_input:
        promotion_code = line[0]
        promotion_name = line[1]
        coupon_code = line[2]
        coupon_name = line[3]
        coupon = {}
        
        if coupon_code == '' and promotion_code !='':
            pro_code = {}
            pro_code['coupon_code'] = promotion_code
            pro_code['type'] = 'promo_code'
            pro_code['description'] = promotion_name
            pro_code['redeem'] = 'false'
            coupon = [pro_code]
        elif coupon_code != '' and promotion_code == '':
            cou_code = {}
            cou_code['coupon_code'] = coupon_code
            cou_code['type'] = 'coupon_code'
            cou_code['description'] = coupon_name
            cou_code['redeem'] = 'false'
            coupon = [cou_code]
        elif (coupon_code != '' and promotion_code !=''):
            both_promo = {}
            both_coup = {}
            both_promo['coupon_code'] = promotion_code
            both_promo['type'] = 'promo_code'
            both_promo['description'] = promotion_name
            both_promo['redeem'] = 'false'
            both_coup['coupon_code'] = coupon_code
            both_coup['type'] = 'coupon_code'
            both_coup['description'] = coupon_name
            both_coup['redeem'] = 'false'
            coupon = (both_promo , both_coup)
        else:
            None
        output_obj = {}
        output_obj['coupons'] = coupon
        output.append(output_obj)
print(json.dumps(output))
And the result like this:
[{"coupons": [{"coupon_code": "T000003155 ~ E000005182", "redeem": "false", "type": "promo_code", "description": "Net Spend - $800 Enjoy $80 off ~ Net Spend $2000 Enjoy 15%* off"}, {"coupon_code": "0494040", "redeem": "false", "type": "coupon_code", "description": "new join $300"}]}]
The sample csv:
Promotion Code|Promotion Name|Coupon Code|Coupon Name
T000003155 ~ E000005182|Net Spend - $800 Enjoy $80 off ~ Net Spend $2000 Enjoy 15%* off |0494040|new join $300
I want to split the promotion code and promotion name. This depends on '~'. And create two records separately.
Desired result:
[{"coupons": [{"coupon_code": "T000003155", "redeem": "false", "type": "promo_code", "description": "Net Spend - $800 Enjoy $80 off"},{"coupon_code": "E000005182", "redeem": "false", "type": "promo_code", "description": "Net Spend $2000 Enjoy 15%* off"}, {"coupon_code": "0494040", "redeem": "false", "type": "coupon_code", "description": "new join $300"}]}]
How can I do this?
 
     
    