python 匹配文本全角转半角字符
来源:互联网 发布:sql语句改列名 编辑:程序博客网 时间:2024/05/14 05:03
在对文本进行处理的时候经常会遇见要对括号和标点进行匹配
常见的英文(半角)符号如( ) 直接用正则匹配即可
但是遇见全角字符(中文括号、标点),直接用正则匹配会存在问题:
因为编码通常为为utf8,若直接匹配,中文括号的3字节编码会和一些中文的字节编码重复,产生意想不到的结果
若用decode转为unicode编码,则可避免产生错误结果,但也无法直接用正则匹配到
经过试验,发现一个看上去最佳的解决方法:
将字符串decode之后调用一个将全角符号转为半角符号的方法,然后处理返回的字符串
def strQ2B(ustring): """全角转半角""" rstring = "" for uchar in ustring: inside_code=ord(uchar) if inside_code == 12288: #全角空格直接转换 inside_code = 32 elif (inside_code >= 65281 and inside_code <= 65374): #全角字符(除空格)根据关系转化 inside_code -= 65248 rstring += unichr(inside_code) return rstringdef p(s): s1 = strQ2B(s.decode()) p = re.compile('[()]',re.S) s1 = p.sub('',s1) return s1
这种方法本质上就是将正则的pattern字符和目标的编码对应, 所以将正则的字符串也用unicode表示就好可以:如下
#!/usr/bin/env python#-*- coding: utf-8 -*-import sysreload(sys)sys.setdefaultencoding('utf8')import reif __name__ == '__main__': s = '123(45)a啊速度(伤害)有限公司' ss = re.sub(u'[()()]', '', s.decode()) print ss
总的来说 两种方法都还是有必要存在的。
第二种方法简单直接 如果能快速方便列出所有形式的待匹配符号,就果断选用第二个
反之,若待匹配的各种符号太多太繁琐,就统一转为半角再处理更好
0 0
- python 匹配文本全角转半角字符
- 全角字符转半角字符
- 全角字符转半角字符
- 全角字符转半角字符and半角转全角
- java:全角字符转半角
- java 全角字符转半角
- java字符全角转半角
- java全角字符转换为半角 半角转全角
- 全角转半角/半角转全角(Python)
- java 全角字符转半角字符
- java 全角字符转半角字符
- js全角字符转半角字符
- java 全角字符转半角字符
- 全角字符 半角字符
- 全角转半角及特殊字符
- java:全角字符转半角 (II)
- java操作字符,java全角转半角
- 全角 半角 字符 数字
- CentOS 7 最小化安装后的注意事项及一些必备组件的安装
- C++ typedef用法详解(转)
- window.XMLHttpRequest对象详解
- winFrom中dataGridView绑定集合ILst
- Spring的JdbcTemplate
- python 匹配文本全角转半角字符
- notes goldendict github wiki
- 百度地图demo,根据ip展示地图显示地区,并在地图上高亮显示
- 188. Best Time to Buy and Sell Stock IV
- 关于ie兼容性的问题
- 特征的选择_03:ChiSqSelector卡方选择器
- ORA-55507: Encountered mining error during Flashback Transaction Backout
- 2017任务
- 节点门面和自定义事件研究