I have a txt file that presents some data as follow:
<name>:<surname>:<age> <name>:<surname>:<age> <name>:<surname>:<age> <name>:<surname>:<age> <name>:<surname>:<age>
The file is all structured in the same way, but I wanted to convert this file to a JSON format.
Based on my experience, I decided to go first with a split to have a list to play with:
import json with open("test.txt") as raw_data: for line in raw_data: data = line.split(":") print(data)
This outputs the text as follow:
["name","surname", "age"] ["name","surname", "age"] ["name","surname", "age"] ["name","surname", "age"] ["name","surname", "age"]
which is perfect. Here is where I get a bit confused and don’t know exactly the best approach to start working with. How can I convert that output to something like:
[ { "Name": name, "Surname": surname, "Age": age }, { "Name": name, "Surname": surname, "Age": age }, { "Name": name, "Surname": surname, "Age": age }, { "Name": name, "Surname": surname, "Age": age } ]
Basically I would like to create those keys and assign them the value of the list and save it as a JSON file.
Advertisement
Answer
I would do something like this which is taking each item from the the line list you’ve created and create a dictionary from them. You can append this to a list and then just use a json.dumps to convert into JSON.
import json list_in_json = [] with open("test.txt") as raw_data: for line in raw_data: data = line.strip().split(":") list_in_json.append({"name": data[0], "surname": data[1], "age": data[2]}) print(json.dumps(list_in_json, indent=4)) [ { "name": "Johnny1", "surname": "Boy1", "age": "1" }, { "name": "Johnny2", "surname": "Boy2", "age": "2" }, { "name": "Johnny3", "surname": "Boy3", "age": "3" }, { "name": "Johnny4", "surname": "Boy4", "age": "4" }, { "name": "Johnny5", "surname": "Boy5", "age": "5" } ]