skip to Main Content

I tried to repeat 10times of json file which add 1~10 at element called "ProcessGuid" in each iteration via the following code

import json
file = open("D:/Test/test.json",'r',encoding='utf-8')
papers = []
for line in file.readlines():
    dic = json.loads(line)
    papers.append(dic)
    
result_int = papers
string_name = list(map(str, range(1,10)))
    
for element in string_name:
    result = []
    result = result_int
    processlist = []
    for i in range(len(result)):
        (result[i])['Event']['EventData']['ProcessGuid'] = str((result[i])['Event']['EventData']['ProcessGuid'])+element
    
    with open("D:/Test/process_"+str(element)+".json", 'w', encoding ='utf8') as json_file:
        json.dump(result, json_file, ensure_ascii = False) 

I though the result of data in each repeat would be like (suppose the origin data element of ProcessGuid is Hello)

1st repeat : ProcessGuid = Hello1
2nd repeat : ProcessGuid = Hello2
3rd repeat : ProcessGuid = Hello3
...
10th repeat : ProcessGuid = Hello10

But the result is the following

1st repeat : ProcessGuid = Hello1
2nd repeat : ProcessGuid = Hello12
3rd repeat : ProcessGuid = Hello123
...
10th repeat : ProcessGuid = Hello12345678910

Where do I get wrong? Thanks.

2

Answers


  1. You keep overwriting result_int over and over again.

    How do I clone a list so that it doesn't change unexpectedly after assignment?

    Change:

    result = list(result_int)
    
    Login or Signup to reply.
  2. For each element, the code appends to the same values.
    If you only want to append each element once to the original values,
    you could save the original values first:

    base_values = [str(paper['Event']['EventData']['ProcessGuid']) for paper in papers]
    
    for element in string_name:
        for i, paper in enumerate(papers):
            paper['Event']['EventData']['ProcessGuid'] = base_values[i] + element
        
        with open("D:/Test/process_" + str(element) + ".json", 'w', encoding ='utf8') as json_file:
            json.dump(papers, json_file, ensure_ascii = False) 
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search