python实现dict写入txt文件

用字典dict做词频统计的时候遇到的小问题:


首先,如果将dict直接写入txt,会出现”TypeError: must be str, not dict“的错误。所以思路:将dict转化为str再写入。

1.将dict序列化后写入,需要用到json的damps()函数对数据进行编码,其返回值是’str‘类型:

dic = {'name': 'Su', 'gender': 'female','age':20}
with open('./test.txt', 'w', encoding='utf-8') as f:
    # 将dic dumps json 格式进行写入
    f.write(json.dumps(dic))

写入test.txt文件的结果为:

{"name": "Su", "gender": "女", "age": 20}

2. 如果dict中存在中文,用以上方法会出现以下结果:

{"\u59d3\u540d": "Su", "\u6027\u522b": "\u5973", "age": 20}

为避免这种情况,需要对以上damps方法中的参数进行设置。先来看看damps函数的源代码:

def dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True,
        allow_nan=True, cls=None, indent=None, separators=None,
        default=None, sort_keys=False, **kw)

其中ensure_ascii用来规定返回值是否可以包含非ASCII码。中文超过ASCII码范围,所以会出现以上乱码情况。(其他参数说明参考源码或这篇博客)。所以修改ensure_ascii参数值:

dic = {'姓名': 'Su', '性别': '女','age':20}

with open('./test.txt', 'w', encoding='utf-8') as f:
    # 将dic dumps json 格式进行写入
    f.write(json.dumps(dic, ensure_ascii=False))

写入test.txt文件的结果为:

{"姓名": "Su", "性别": "女", "age": 20}

  • 19
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值