python中的编码问题及读写中文(codecs模块、文件读写)

问题1:

之前一直使用python自带的open()函数读写文件没什么问题,最近项目需求需要操作文件读写中文,遇到了编码问题。

解决思路:codecs模块用于各种编码之间的转换,在打开文件时指定编码格式即可。

向文件中写入中文:

f = codecs.open('filename', 'w', 'utf-8')
f.write('中文')
f.close()

问题2:

列表中包含中文时打印输出显示不对。

先看以下代码:

a_list = list()
a_list.append('中文')
print(a_list)

# 输出结果:['\xe4\xb8\xad\xe6\x96\x87']

那么如何在打印列表时显示中文呢?解决方法如下:

a_list = list()
a_list.append(u'中文')
print(str(a_list).decode('unicode-escape'))

# 输出结果:[u'中文']

思路是:通过字符串化处理,将list转化为str(utf-8)文本编码的方式,同时要保留list里面的unicode,避免通过字符处理导致的转义操作,破坏掉中文的unicode,因此选择了unicode-escape

总结:

python中内部编码格式为unicode, 如果想进行编码格式的转换,首先需要把原编码格式转换成python内部unicode编码中间格式,再将unicode编码转换成目标编码格式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值