在对文本进行处理的时候经常会遇见要对括号和标点进行匹配

常见的英文(半角)符号如( ) 直接用正则匹配即可

但是遇见全角字符(中文括号、标点),直接用正则匹配会存在问题:

因为编码通常为为utf8,若直接匹配,中文括号的3字节编码会和一些中文的字节编码重复,产生意想不到的结果

若用decode转为unicode编码,则可避免产生错误结果,但也无法直接用正则匹配到

经过试验,发现一个看上去最佳的解决方法:

将字符串decode之后调用一个将全角符号转为半角符号的方法,然后处理返回的字符串

def strQ2B(ustring):"""全角转半角"""rstring = ""for uchar in ustring:inside_code=ord(uchar)if inside_code == 12288:                              #全角空格直接转换inside_code = 32elif (inside_code >= 65281 and inside_code <= 65374): #全角字符(除空格)根据关系转化inside_code -= 65248rstring += 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 sys
reload(sys)
sys.setdefaultencoding('utf8')
import reif __name__ == '__main__':s = '123(45)a啊速度(伤害)有限公司'ss = re.sub(u'[()()]', '', s.decode())print ss

总的来说 两种方法都还是有必要存在的。

第二种方法简单直接 如果能快速方便列出所有形式的待匹配符号,就果断选用第二个

反之,若待匹配的各种符号太多太繁琐,就统一转为半角再处理更好

python匹配文本中全角符号的两种方法相关推荐

  1. python取出字典中的所有值的两种方法

    方法一: spam = {'A':123 ,'B':345,'C':345 } for k,v in spam.items():print(k,v) 方法二: spam = {'A':123 ,'B' ...

  2. 全角数字变半角php,php代码中全角数字转半角的方法

    php代码中全角数字转半角的方法 发布时间:2020-10-13 14:33:52 来源:亿速云 阅读:66 作者:小新 小编给大家分享一下php代码中全角数字转半角的方法,相信大部分人都还不怎么了解 ...

  3. php文本框自动补全,PHP自动补全表单的两种方法

    效果图: 第一种:从数据库中检索之后补全 第二种:邮箱等纯前端的补全 先说第二种,使用开源的插件,所以相对简单. github上面的项目 completer. https://github.com/f ...

  4. python怎么清屏_python实现清屏的方法 Python Shell中清屏一般有两种方法。

    Python Shell 怎样清屏? Python Shell中清屏一般有两种方法. 奈何一个人随着年龄增长,梦想便不复轻盈:他开始用双手掂量生活,更看重果实而非花朵.--叶芝<凯尔特的搏暮&g ...

  5. java中n次方怎么表示_n次方_word中输入N次方的符号的两种方法

    为了打编程题的题目,而题目里面有X²,但我不懂,只好去网上查了,经过我的多方查找,最后总结了一下几种方法.下面一起和学习啦小编来学习一下输入N次方的符号吧,希望对你有帮助! 输入N次方的符号方法一 1 ...

  6. js中判断文本框是否为空的两种方法

    js中判断文本框是否为空的两种方法 //用户名非空验证 function checkUserName(){ var name = document.myform.txtUser; //在这里我认为: ...

  7. arcgis用python字段自动编号,arcgis中字段自动编号的两种方法

    <arcgis中字段自动编号的两种方法>由会员分享,可在线阅读,更多相关<arcgis中字段自动编号的两种方法(4页珍藏版)>请在人人文库网上搜索. 1.精选文档关于ARCGI ...

  8. Python计算程序运行时间秒级/毫秒级的两种方法datetime和time

    Python计算程序运行时间秒级/毫秒级的两种方法datetime和time 简单粗暴,先上代码: import datetime import time# 方法一:datetime.datetime ...

  9. Revit插件教学丨Revit中绘制斜楼板的两种方法?

    Revit插件教学丨Revit中绘制斜楼板的两种方法? 我们经常遇到一些斜楼板,很多朋友不知道如何画好楼板,经常在公众号留言说怎么画好楼板,怎么快速高效.但我相信很多玩Revit的玩家都很熟悉,今天和 ...

最新文章

  1. 四步相移法怎么获得相位信息_涨知识!5G的调制方式,到底是怎么实现的?
  2. Cacti脚本及模板
  3. LNMP下目录访问验证
  4. ppt提示内存或系统资源不足_为何手机一直提示内存不足?原来是它们惹的祸,赶紧清了...
  5. 宝塔安装 pdo_mysql_linux宝塔面板安装安装 pdo_sqlsrv扩展
  6. python泰坦尼克号数据预测_使用python预测泰坦尼克号生还
  7. php 类加载,关于PHP中类的加载
  8. 找工作,改简历,投递装订——累就一个字啊!
  9. Cesium中的常用坐标及转换
  10. Frp后台自动启动的几个方法-内网穿透
  11. java开发中的各种中间件技术
  12. 带有点***色彩的LanHelper网络工具的使用
  13. 同时收到多家公司offer,怎样选择?
  14. C语言排序算法之“选择排序法”
  15. 想自己做个网站,常用的自助建站哪个好呢?需要注意什么
  16. 蓝桥杯 青少年创意编程大赛 scratch 组(一)
  17. 域名升级访问中拿笔记好_域名选择与老域名质量评分,尽量少踩坑
  18. 宜宾市中小学足球调研现状
  19. sql 获取日期时分秒_Sql 中获取年月日时分秒的函数
  20. 曹操煮酒论英雄谈龙(转)

热门文章

  1. Mybatis insert数据时返回主键
  2. 通过代码学习 VQ-VAE
  3. vue ui 可视化界面 创建项目 报错:command failed: yarn --json。。。。。
  4. javascript不依赖库开发windows应用程序
  5. 小红书2020校招前端笔试题卷三
  6. 基于Java的Android区块链钱包开发(ETH篇)
  7. win7安装和配置IIS7
  8. mongodb设置环境变量
  9. css如何设置x轴为滚动,解决移动端页面出现 X轴横向滚动条问题
  10. 【部署LVS-DR 群集】