Writing a dictionary to a textile line by line
本问题已经有最佳答案,请猛点这里访问。
我有一些代码可以创建字典并将其粘贴到文本文件中。但它将字典粘贴为一行。下面是它创建的代码和文本文件。
1 2 3 4 5 | print('Writing to Optimal_System.txt in %s ' %(os.getcwd())) f = open('Optimal_System.txt','w') f.write(str(optimal_system)) f.close |
有没有办法让文本文件给每个键值对这样的一行?
1 2 3 4 | {'Optimal Temperature (K)': 425 'Optimal Pressure (kPa)': 100 ... } |
您可以使用
1 2 3 4 5 6 | 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) |
将产生:
1 2 3 4 5 | {'Optimal Pressure (kPa)': 100, 'Optimal Temperature (K)': 425, 'other stuff': [1, 2, Ellipsis]} |
使用格式化字符串并假设
1 2 3 4 | with open('output.txt', 'w') as f: for k in optimal_system.keys(): f.write("{}: {} ".format(k, optimal_system[k])) |
编辑
如@wwii所指出的,上述代码也可以写成:
1 2 3 4 | with open('output.txt', 'w') as f: for k, v in optimal_system.items(): f.write("{}: {} ".format(k, v)) |
而且字符串可以使用格式化的字符串文本进行格式化,这是从Python3.6开始提供的,因此
'
".format(k, v)
可以使用json.dumps()对indent参数执行此操作。例如:
1 2 3 4 5 6 7 | 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)) |