Python笔记:把字典一行一行写入文件(txt或json)里

本文详述Python字典写入文件的多种方法,包括处理列表嵌套、中文编码、不同open函数参数使用,以及从dataframe创建字典的过程。通过实例演示如何实现字典元素独立成行,探讨json和txt格式的写入差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python字典写入文件的各种方式及效果

(百度搜了一大圈都没找到解决我自己问题的方法,可能因为我在字典里套了list
写入.json和.txt文件我感觉格式一样(暂且不区分了

 我想要的效果是:字典的各个元素也就是每个键值对单独占一行

在这里插入图片描述

1. 普通字典写入文件

(不是一行一行的情况)
import json
dict = {"Alice":97,"Bob":98}
json_str = json.dumps(dict) #dumps
with open('test_data.txt', 'w') as f:
    f.write(json_str)

效果在文件里面就是这样:
在这里插入图片描述

(一行一行写入的情况)
dict = {"Alice":97,"Bob":98}
with open('test_data.txt', 'w') as f:
    json_str = json.dumps(dict,indent=0)
    f.write(json_str)
    f.write('\n')

多亏了indent这个参数:缩进的作用(但是如果value值是list的情况,换行会奇怪起来)
在这里插入图片描述

2.一键多值(值为一个list的文件)

(不分行和上面是一样的,如果按上面的方式分行的话)
dict = {"Alice":[97,98],"Bob":[87,99]}
with open('test_data.txt', 'w') as f:
    json_str = json.dumps(dict,indent=0)
    f.write(json_str)
    f.write('\n')

效果是这样的,list也被分成一行一行的了,我也不知道为什么:
在这里插入图片描述

(有list的分行,结论确实没有什么参数和函数可以直接一行一行,只能手动字符串转换)
dict = {"Alice":[97,98],"Bob":[87,99]}
with open('test_data.txt', 'w') as f:
    f.write('{')#这样子字典没有自动的大括号要自己加
    for key in dict:
        f.write('\n')
        f.writelines('"' + str(key) + '": ' + str(dict[key]))
    f.write('\n'+'}')

最终想要的效果来啦:
在这里插入图片描述

3.写入时open函数参数问题(追加/重写之类的)

‘r’:读
‘w’:写
‘a’:追加
‘r+’ == r+w(可读可写,文件若不存在就报错(IOError))
‘w+’ == w+r(可读可写,文件若不存在就创建)
‘a+’ ==a+r(可追加可写,文件若不存在就创建)
对应的,如果是二进制文件,就都加一个b就好啦:
‘rb’  ‘wb’  ‘ab’  ‘rb+’  ‘wb+’  ‘ab+’

 f.write(json_str+'\n')   #加\n换行显示

4.中文编码问题

# 对中文编码处理,使得生成的json文件中中文能正常显示,而不是以Unicode码显示
final_json = json.dumps(df, sort_keys=True, indent=4, ensure_ascii=False)
with open(file_name, 'w') as fObj:
  fObj.write(final_json)

5.df的两列转换成为字典的问题:

dataframe的两列来创建字典的问题,有两种情况:**
一种是列名为key 值为value
另一种是直接两列一列为key一列为value

这里介绍第二种举例
链接https://blog.youkuaiyun.com/weixin_44896376/article/details/103422056

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值