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之用while来循环
Oct 02 Python
python中list循环语句用法实例
Nov 10 Python
Mac下Supervisor进程监控管理工具的安装与配置
Dec 16 Python
利用Psyco提升Python运行速度
Dec 24 Python
Python contextlib模块使用示例
Feb 18 Python
详解python开发环境搭建
Dec 16 Python
Python实现的多项式拟合功能示例【基于matplotlib】
May 15 Python
Python实现的爬取小说爬虫功能示例
Mar 30 Python
Python脚本利用adb进行手机控制的方法
Jul 08 Python
Python将string转换到float的实例方法
Jul 29 Python
Python内置函数locals和globals对比
Apr 28 Python
Python pip安装第三方库实现过程解析
Jul 09 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
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
php一些错误处理的方法与技巧总结
2013/08/10 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
JS实现闪动的title消息提醒效果
2014/06/20 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
jQuery实现轮播图源码
2019/10/23 jQuery
js+css实现扇形导航效果
2020/08/18 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
Python的一些用法分享
2012/10/07 Python
python批量导出导入MySQL用户的方法
2013/11/15 Python
Python BeautifulSoup中文乱码问题的2种解决方法
2014/04/22 Python
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
Python计算三角函数之asin()方法的使用
2015/05/15 Python
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
Python 使用os.remove删除文件夹时报错的解决方法
2017/01/13 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
Python random模块的使用示例
2020/10/10 Python
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
彪马日本官网:PUMA日本
2019/01/31 全球购物
数据员岗位职责
2013/11/19 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
小学生安全教育广播稿
2014/10/20 职场文书
2014年采购工作总结
2014/11/20 职场文书
领导干部考核评语
2015/01/04 职场文书
欠条范文
2015/07/03 职场文书
大学生活委员竞选稿
2015/11/21 职场文书
python实现简单的三子棋游戏
2022/04/28 Python