『壹』 python的UTF-8问题
编码问题需要注意:
你的py文件是utf8编码的
在py文件开始的第一行加上 # -*- coding:utf-8 -*-
处理中文时,如果是自定义存储中文的变量,最好用 a = u'xx'形式
如果是其他来源,先decode('来源是什么编码'),再encode('utf-8')
『贰』 Python处理不同编码utf8和gbk的问题
有。
使用chardet库。它会去猜测文本文件的编码,并返回形如:
编码类型:utf-8
置信度:0.9
这样的结果,也就是说chardet断定该文件有90%的可能性是utf-8编码的。
不过chardet的缺陷就是,它不能完全100%确定文件的编码类型。
目前我的做法是,如果置信度超过0.95,那么就认定chardet的判断结果是正确的。否则,再加上一些人机交互操作进行判断。
目前,chardet库官网提供的版本只适用于Python 2,如果您使用的是Python 3.x,我可以另外上传一个。
『叁』 python pandas 过滤某列特殊字符求助
汉字也被替换掉了:utf-8
import numpy as np
import pandas as pd
import re
df=pd。
#coding;cidnum'.keyword = df,';)
发现结果把所有的非数字及字母全部替换掉了;;keyword')
df;/, '.str,';'[^a-zA-Z0-9_\]
#将双引号过滤掉
#将NA的替换掉g
df=df.keyword = df;;path'
df,'name'home/.keyword, '.replace(r;0'file_20150625'.fillna(')
r=u',header=None;cid'.str.lower()
i = 0
df, sep='.keyword,字母意外的所有特殊符号,数字;;u9fa5]'u4e00-\t'想过滤掉除文字。原因是什么啊.read_csv('.columns=[',具体解决方案如下:
解决方案1:
改成r="\W"试试
解决方案2:
=u'u4e00-\[^a-zA-Z0-9_\u9fa5]'
解决方案3:
你自己先要确定“乱码”的定义,例如韩文(unicode),如果你装了韩文字体,那是可以显示的,不是乱码,但没装的话就是问号一堆,如果是韩文
(euc-kr),在汉字系统那只是一堆无语义的汉字……可能这个举例扯远了,你觉得不会有这种情况,但我只是提醒一下会有意料之外的情况
所以,你需要一个白名单,把你允许的字符unicode范围都列出来,因为肯定不止汉字,像你列出的文件名中就有空格
另外,没必要逐个字符检查,直接用re.sub去除白名单外的字符就可以了
『肆』 如何设置python的编码格式为utf-8
重装了系统(ubuntu 14.04)原来正常可用的OpenERP项目在切换到开发者模式的时候报错:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)
而在服务器上的项目正常可用,其原因是由于python的默认编码设置为ascii,可以用以下命令查看:
import sys
sys.getdefaultencoding()
解决方案有两种:
1. 在项目启动文件中添加设置字符为utf8:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
2. 在python的lib文件夹下的sitecustomize.py文件中添加代码:(我的文件位于/usr/lib/python2.7)
import sys
reload(sys)
sys.setdefaultencoding('utf8')
try:
import apport_python_hook
except ImportError:
pass
else:
apport_python_hook.install()
relaod(sys)一句是必须的
『伍』 怎么在Python里使用UTF-8编码
一个完整的开头应该是这个样子的:
#!
usr/bin/python
#coding=utf-8
//这句是使用utf8编码方式方法,
可以单独加入python头使用。
#
-*-
coding:cp936
-*-
import
sys
reload(sys)
sys.setdefaultencoding('utf-8')
sys.path.append("../pythonLib/")
import
os,
string
import
json
import
time
from
time
import
*
希望可以帮到你。
『陆』 python 判断一个字符能否用gbk和utf8编码
使用chardet库。它会去猜测文本文件的编码,并返回形如:
编码类型:utf-8
置信度:0.9
这样的结果,也就是说chardet断定该文件有90%的可能性是utf-8编码的。
不过chardet的缺陷就是,它不能完全100%确定文件的编码类型。
目前我的做法是,如果置信度超过0.95,那么就认定chardet的判断结果是正确的。否则,再加上一些人机交互操作进行判断。
目前,chardet库官网提供的版本只适用于Python 2,如果您使用的是Python 3.x,我可以另外上传一个。
『柒』 用Python 抓取的UTF8网页无法decode('utf-8')
估计就是个别字符有问题,即
本来标称utf-8,但是实际上个别字符不是utf-8,比如是gb2312
结果导致错误。
常见的解决办法是,添加ignore参数,比如:
decodedUnicodeHtml = yourHtml.decode("UTF-8", 'ignore')
就可以正常解码了。
更多相关内容可参考:
【总结】Python 2.x中常见字符编码和解码方面的错误及其解决办法
(此处没法发布地址,请自己google搜帖子标题,即可找到帖子地址)
『捌』 python读取文件解决‘utf8’ codec can’t decode byte 0xa1的问题
一般这种文件存在类似字符:
如果UTF-8搞不定,可以采取ISO-8859-1编码方式解决:
最早的编码是iso8859-1,和ascii编码相似。但为了方便表示各种各样的语言,逐渐出现了很多标准编码,重要的有如下几个。
很明显,iso8859-1编码表示的字符范围很窄,无法表示中文字符。但是,由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍旧使用iso8859-1编码来表示。而且在很多协议上,默认使用该编码。比如,虽然"中文"两个字不存在iso8859-1编码,以gb2312编码为例,应该是"d6d0 cec4"两个字符,使用iso8859-1编码的时候则将它拆开为4个字节来表示:"d6 d0 ce c4"(事实上,在进行存储的时候,也是以字节为单位处理的)。而如果是UTF编码,则是6个字节"e4 b8 ad e6 96 87"。很明显,这种表示方法还需要以另一种编码为基础。
需要说明的是,定长编码便于计算机处理(注意GB2312/GBK不是定长编码),而unicode又可以用来表示所有字符,所以在很多软件内部是使用unicode编码来处理的,比如java。
注意,虽然说utf是为了使用更少的空间而使用的,但那只是相对于unicode编码来说,如果已经知道是汉字,则使用GB2312/GBK无疑是最节省的。不过另一方面,值得说明的是,虽然utf编码对汉字使用3个字节,但即使对于汉字网页,utf编码也会比unicode编码节省,因为网页中包含了很多的英文字符。