逐行将字典写入纺织品。

11 浏览
0 Comments

逐行将字典写入纺织品。

此问题在这里已经有了答案:

如何美观地打印JSON文件?

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

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

admin 更改状态以发布 2023年5月21日
0
0 Comments

你可以使用pprint模块,它也适用于所有其他数据结构。
要强制每个条目换行,请将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]}

0
0 Comments

使用格式化字符串,并假设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))

并且可以使用自python 3.6以来提供的格式化字符串字面量进行格式化,因此使用f'{k}:{v}\n'而不是"{}: {}\n"。format(k,v)

0