'Write List of Jsons using Strings

I'm staring at a file I'm not sure what to do with. File (data.txt) that contains a list of dictionaries like this:

{'name': 'jerry', 'internalip1': '192.168.1.1', 'externalip1': '1.1.1.1', 'internalip2': '192.168.1.2', 'externalip2': '2.2.2.2', 'port1': '5451', 'port2': '5450', 'port3': '', 'port4': '', 'port5': '', 'port6': ''}
{'name': 'chris', 'internalip1': '192.168.2.1', 'externalip1': '3.3.3.3', 'internalip2': '192.168.3.5', 'externalip2': '4.4.4.4', 'port1': '1234', 'port2': '', 'port3': '5671', 'port4': '5672', 'port5': '80', 'port6': '443'}
...
...

How can I create a new text file (data_updated.txt) that looks like this:

edit "externalip1--internalip1 Port port1"
set extip externalip1
set mappedip "internalip1"
set portforward enable
set extport port1
set mappedport port1

edit "externalip1--internalip1 Port port2"
set extip externalip1
set mappedip "internalip1"
set portforward enable
set extport port2
set mappedport port2
...
...


Solution 1:[1]

You can do something like this:

with open('data.txt') as data_file:
    lines = data_file.readlines()
    output = []
    for line in lines:
        data = eval(line.strip())
        output.extend([
            f"edit \"{data['externalip1']}--{data['externalip1']} Port {data['port1']}\"\n",
            f"set extip externalip1\n",
            f"set mappedip \"{data['internalip1']}\"\n",
            f"set portforward enable\n",
            f"set extport {data['port1']}\n",
            f"set mappedport {data['port1']}\n",
            '\n',
            # ...
        ])
    with open('data_updated.txt', 'w') as output_file:
        output_file.writelines(output)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1