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的WEB框架Flask中使用多个配置文件的解决方法
Apr 18 Python
Python开发实例分享bt种子爬虫程序和种子解析
May 21 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
用python做游戏的细节详解
Jun 25 Python
python关于调用函数外的变量实例
Dec 26 Python
Python 统计位数为偶数的数字代码详解
Mar 15 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
Mar 30 Python
TensorFlow实现批量归一化操作的示例
Apr 22 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
May 10 Python
tensorflow之读取jpg图像长和宽实例
Jun 18 Python
Django后端分离 使用element-ui文件上传方式
Jul 12 Python
Python ellipsis 的用法详解
Nov 20 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
239军机修复记
2021/03/02 无线电
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
PHP生成条形图的方法
2014/12/10 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
yii2安装详细流程
2018/05/23 PHP
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
小程序自定义组件实现城市选择功能
2018/07/18 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
2019/03/11 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
Python与shell的3种交互方式介绍
2015/04/11 Python
python 系统调用的实例详解
2017/07/11 Python
对Tensorflow中权值和feature map的可视化详解
2018/06/14 Python
python的继承知识点总结
2018/12/10 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
2019/08/12 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
什么是唯一索引
2015/07/05 面试题
爱情寄语大全
2014/04/09 职场文书
竞选部长演讲稿
2014/04/26 职场文书
比赛口号大全
2014/06/10 职场文书
武侯祠导游词
2015/02/04 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
100句人生哲理语录集锦:强者征服今天,懒汉坐等明天
2019/10/18 职场文书
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers