如何通过逐行读取文件来制作json字符串?

时间:2018-05-24 21:18:01

标签: python

我有一个这样的文件:

machineA=1.2.3.4.5
machineB=2.5.7.8.9

我需要阅读上面的文件并为每一行创建一个这样的字符串:

{"test":"hello world.","server":"machineA","ip":"1.2.3.4.5","reason":"data"}
{"test":"hello world.","server":"machineB","ip":"2.5.7.8.9","reason":"data"}

正如您在上面的json字符串中所看到的,只有serverip的值正在发生变化而其他剩余的两个键,它的值始终保持不变。如何为每一行生成这样的字符串?

我无法弄清楚如何为每一行制作对应的json并在控制台上打印出来。

f = open('hosts.txt')
line = f.readline()
while line:
    print(line)
    machine=line.split("=")[0]
    ip=line.split("=")[1]

    # now how to make a json string for each line
    line = f.readline()
f.close()

2 个答案:

答案 0 :(得分:3)

我建议创建一个字典,然后使用内置的json模块将其转换为JSON字符串,因为我发现它更清晰。

import json

mydict = {
    "test": "hello world.",
    "server": machine,
    "ip": ip,
    "reason": "data"
 }
 json.dumps(mydict)

如果没有json模块

,请参阅Robᵩ's answer

答案 1 :(得分:1)

您没有 使用JSON库只是因为输出格式是JSON。尝试其中之一:

output_line = '{"test":"hello world.","server":"%s","ip":"%s","reason":"data"}'%(
    machine, ip)
output_line = '{{"test":"hello world.","server":"{}","ip":"{}","reason":"data"}'.format(
    machine, ip)
output_line = f'{{"test":"hello world.","server":"{machine}","ip":"{ip}","reason":"data"}'

请注意,最后一行仅适用于Python3的最新版本。