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 字符串定义
Sep 25 Python
删除目录下相同文件的python代码(逐级优化)
May 25 Python
Python3基础之函数用法
Aug 13 Python
Python字符串处理之count()方法的使用
May 18 Python
Python操作Excel之xlsx文件
Mar 24 Python
TensorFlow实现AutoEncoder自编码器
Mar 09 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
Aug 27 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 Python
Tensorflow 多线程设置方式
Feb 06 Python
python zip,lambda,map函数代码实例
Apr 04 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 Python
用python实现监控视频人数统计
May 21 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
4.与数据库的连接
2006/10/09 PHP
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
Javascript读取cookie函数代码
2010/10/16 Javascript
JS 面向对象之神奇的prototype
2011/02/26 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
JavaScript实现两个select下拉框选项左移右移
2017/03/09 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
Python with的用法
2014/08/22 Python
python如何实现反向迭代
2018/03/20 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
使用django的objects.filter()方法匹配多个关键字的方法
2019/07/18 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
HTML5实现移动端弹幕动画效果
2019/08/01 HTML / CSS
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
成人大专自我鉴定范文
2013/10/19 职场文书
应届生财务管理求职信
2013/11/06 职场文书
会计辞职信范文
2014/01/15 职场文书
《雷雨》教学反思
2014/02/20 职场文书
信息科学与技术专业求职信范文
2014/02/20 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
2015年财务部工作总结
2015/04/10 职场文书
质量承诺书格式范文
2015/04/28 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python