Python处理中文标点符号大集合


Posted in Python onMay 14, 2018

中文文本中可能出现的标点符号来源比较复杂,通过匹配等手段对他们处理的时候需要格外小心,防止遗漏。以下为在下处理中文标点的时候采用的两种方法:

中文标点集合

比较常见标点有这些:

!?。"#$%&'()*+,-/:;<=>@[\]^_`{|}~⦅⦆「」、、〃》「」『』【】〔〕〖〗〘〙〚〛〜??〟〰〾〿?—‘'‛“”„‟…‧?.

调用zhon包的zhon.hanzi.punctuation函数即可得到这些中文标点。

如果想用英文的标点,则可调用string包的string.punctuation函数可得到:

!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~

因此,比如需要将所有标点符号去除,可以进行以下操作:

>>> import re
>>> from zhon.hanzo import punctuation
>>> line = "测试。。去除标点。。"
>>> print re.sub("[{}]+".format(punctuation), "", line.decode("utf-8")) # 需要将str转换为unicode

当然,如果想去除重复的符号而只保留一个,那么可以用\1指明:比如

>>> re.sub(ur"([{}])+".format(punctuation), "\1", line.decode("utf-8"))

你也可以手工指定这些标点符号

punctuation = """!?。"#$%&'()*+-/:;<=>@[\]^_`{|}~⦅⦆「」、、〃》「」『』【】〔〕〖〗〘〙〚〛〜??〟〰〾〿?—‘'‛“”„‟…‧?"""
re_punctuation = "[{}]+".format(punctuation)
line = re.sub(re_punctuation, "", line)

可以通过直接指定unicode码范围的办法来strip,比如:

去除所有半角全角符号,只留字母、数字、中文

def remove_punctuation(line):
  rule = re.compile(ur"[^a-zA-Z0-9\u4e00-\u9fa5]")
  line = rule.sub('',line)
  return line

汉字的范围为”\u4e00-\u9fa5“,这个是用Unicode表示的,所以前面必须要加”u“;字符”r“的意思是表示忽略后面的转义字符,这样简化了后面正则表达式里每遇到一个转义字符还得挨个转义的麻烦

最后可以组合成为一个函数

def remove_punctuation(line, strip_all=True):
  if strip_all:
    rule = re.compile(ur"[^a-zA-Z0-9\u4e00-\u9fa5]")
    line = rule.sub('',line)
  else:
    punctuation = """!?。"#$%&'()*+-/:;<=>@[\]^_`{|}~⦅⦆「」、、〃》「」『』【】〔〕〖〗〘〙〚〛〜??〟〰〾〿?—‘'‛“”„‟…‧?"""
    re_punctuation = "[{}]+".format(punctuation)
    line = re.sub(re_punctuation, "", line)
  return line.strip()

清洗完毕后,有时候我们希望按照多个标点符号来分割

比如只要遇到中文或英文的逗号和句号等符号就分割,可以直接用translate把这些符号翻译为统一的分隔符,再split:

strip_chars = '?"。.,,《》[]〖〗“”'
single_line = single_line.translate(str.maketrans(dict.fromkeys(strip_chars, '#')))
single_line = single_line.split('#')

总结

以上所述是小编给大家介绍的Python处理中文标点符号大集合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python实现百度关键词排名查询
Mar 30 Python
Python通过websocket与js客户端通信示例分析
Jun 25 Python
python删除指定类型(或非指定)的文件实例详解
Jul 06 Python
python比较两个列表是否相等的方法
Jul 28 Python
Python3.x对JSON的一些操作示例
Sep 01 Python
浅谈python numpy中nonzero()的用法
Apr 02 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
Apr 21 Python
python 字符串常用方法汇总详解
Sep 16 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
May 25 Python
python中wheel的用法整理
Jun 15 Python
python实现简单文件读写函数
Feb 25 Python
Pytorch中TensorBoard及torchsummary的使用详解
May 12 Python
python numpy格式化打印的实例
May 14 #Python
Python常见字典内建函数用法示例
May 14 #Python
python:print格式化输出到文件的实例
May 14 #Python
查看django版本的方法分享
May 14 #Python
django 修改server端口号的方法
May 14 #Python
python字符串string的内置方法实例详解
May 14 #Python
python获取文件真实链接的方法,针对于302返回码
May 14 #Python
You might like
PHP函数之日期时间函数date()使用详解
2013/09/09 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
使用vue如何构建一个自动建站项目
2018/02/05 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
layer.open关闭父窗口 以及调用父页面的方法
2018/08/17 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
Python设计模式之代理模式实例
2014/04/26 Python
使用Python中的cookielib模拟登录网站
2015/04/09 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
2020/06/28 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
电子信息毕业生自荐信
2013/11/16 职场文书
医院实习介绍信
2014/01/12 职场文书
省三好学生申请材料
2014/01/22 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
员工自我工作评价
2015/03/06 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
体育教师研修感悟
2015/11/18 职场文书
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
使用CSS连接数据库的方式
2022/02/28 HTML / CSS