逐行向纺织品写字典

时间:2019-01-06 19:08:18

标签: python

我有一些代码可以创建字典并将其粘贴到文本文件中。但是它将字典粘贴为一行。下面有代码和它创建的文本文件。

print('Writing to Optimal_System.txt in %s\n' %(os.getcwd()))    
f = open('Optimal_System.txt','w')
f.write(str(optimal_system))
f.close  

有没有办法使文本文件像这样给每个键值对提供自己的一行?

{'Optimal Temperature (K)': 425
 'Optimal Pressure (kPa)': 100
 ...
}

enter image description here

3 个答案:

答案 0 :(得分:2)

使用格式字符串并假定optimal_system是您的字典:

with open('output.txt', 'w') as f:
    for k in optimal_system.keys():
        f.write("{}: {}\n".format(k, optimal_system[k]))

编辑

@wwii指出,上面的代码也可以写成:

with open('output.txt', 'w') as f:
    for k, v in optimal_system.items():
        f.write("{}: {}\n".format(k, v))

可以使用formatted string literals格式化字符串,该字符串自python 3.6起可用,因此是f'{k}: {v}\n'而不是"{}: {}\n".format(k, v)

答案 1 :(得分:2)

您可以使用pprint module -它也适用于所有其他数据结构。 要强制每个条目都换行,请将width参数设置为较低的值。 stream参数可让您直接写入文件。

import pprint
mydata = {'Optimal Temperature (K)': 425,
          'Optimal Pressure (kPa)': 100,
          'other stuff': [1, 2, ...]}
with open('output.txt', 'w') as f:
    pprint.pprint(mydata, stream=f, width=1)

将产生:

{'Optimal Pressure (kPa)': 100,
 'Optimal Temperature (K)': 425,
 'other stuff': [1,
                 2,
                 Ellipsis]}

答案 2 :(得分:0)

您可以使用json.dumps()通过indent参数执行此操作。例如:

import json

dictionary_variable = {'employee_01': {'fname': 'John', 'lname': 'Doe'},
                       'employee_02': {'fname': 'Jane', 'lname': 'Doe'}}

with open('output.txt', 'w') as f:
    f.write(json.dumps(dictionary_variable, indent=4))