python程序中中文乱码如何解决,python2输出中文乱码
最近分析关键词涉及到需要过滤一些特殊字符。包括签名的(有些是SQL注入的),有些是乱码。整理出来以备后用。
检测字符串是否包含特殊符号
方案一:通过人物匹配来判断。
def if_contain_symbol(关键字):symbols=~!@ # $% * () _-*/,[]\/ For symbols in symbols:if symbol in keyword:return true else:return false方案二:使用正则表达式判断(经过测试,\W有中文可用)
import re def if_contain_symbol(关键字):if re.search(r\W ,关键字):返回True else:返回False检测字符串中是否有乱码
人眼能识别的乱码并没有程序中想象的那么简单。就节目而言,“娟菊”本身就是一个正常的角色。以下是一些折衷方案:
方案一:分词后统计分词率。
从概率层面来说,正常的文本切分率(切分后的文本长度/数量)是2,而乱码接近1。
具体代码如下:
没人回答问题?边肖创建了一个Python学习交流QQ群:579817333。找志同道合的朋友互相帮助,群里也有不错的视频学习教程和PDF电子书!’ # -*-编码:utf-8-*-导入jieba def if _ contain _ chaos(keyword):str _ len=len(keyword)Seg _ len=len(jieba . lcut(keyword))if str _ len/Seg _ len 2:返回true else:返回false。如果字符串中有英文,这种方法的可用性不高,尤其是在关键字长度非常小的场景下。
方案二:判断是否包含生僻字。
1980年的GB2312包含7445个字符,其中包括6763个汉字和682个其他符号。汉字内码范围从B0-F7到A1-FE,占用码位为72*94=6768。其中5个空缺是D7FA-D7FE。这6763个汉字在Unicode中是不连续的,分布在CJK统一汉字区(0x4E00-0x9FA5)的20902个汉字中。
将生僻字直接定义为非GB2312字符。因为GB2312的字符不是连续的,所以不能用正则表达式直接限定。我们的方案是通过将字符串的unicode转换成GB2312来确定是否有生僻字。即转换异常时,包含生僻字。
def if _ contain _ chaos(keyword):try:keyword . encode( GB 2312 )except unicode encoded error:return True return False
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。