python字符处理

python字符处理一些思考

先解释几个概念
ASCII字符集:英文,英文符号采用西欧编码,中文字符采用GB2321和GBK,两者兼容
unicode字符集:UTF-8编码

如果一个文件中文使用的ASCII字符集,通过gbk编码,使用python输出而不进行编解码的话,就会造成输出的字符乱码
这里有三个方案可以解决

  1. 修改显示的终端软件的默认编码格式,还是选择为gbk格式编码,则会显示正常的中文字符
  2. 如输出到文件中,然后通过文本编辑软件打开。(这里要说明一下,文本编辑软件必须要支持自动转换编解码才行。像sublime txt3 就不支持,还是需要手动进行设置。vim 的话可以在.vimrc中添加如下配置: set fileencodings=ucs-bom,utf-8,GB18030,gbk 就可以自行转换编码格式。)
  3. 使用python程序本身进行编解码的操作

下面就重点讲一下通过python程序进行编解码的操作

首先我们建立一个csv格式的文件,叫做codetest.csv。

通过notepad++打开,notepad++默认是utf8格式编码显示的,可以看到,内容中有中文是乱码。
这里写图片描述

通过方法2转换为gb2312编码可以显示出正常的中文字符
gb2312编码


如果使用python在终端输出,编写读取csv文件的python代码


#!/usr/bin/python
#coding:utf-8
import os
import csv 

with open('~/codetest.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print row[5]  

通过在python命令行中执行上述程序,可以得到“栏目3”这个字符串的gb2312的编码:

>>> with open('~/codetest.csv', 'r') as f:
...     reader = csv.reader(f)
...     for row in reader:
...             str = row[5]
... 
>>> str
'\xc0\xb8\xc4\xbf3'
>>>

这串编码通过utf-8解码出来的字符就是下图显示的这几个字符。
这里写图片描述

为了能得到正确的编码需要怎么做呢?只需要在打印前先进行解码

        print row[5].decode('gb2312')

这样才输出就可以看到正确的结果
这里写图片描述

关于python编解码,请参考该说明
关于字符码,编码方式,请点这里,点这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值