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 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 Python
python 执行shell命令并将结果保存的实例
May 11 Python
Python 数值区间处理_对interval 库的快速入门详解
Nov 16 Python
python3+selenium自动化测试框架详解
Mar 17 Python
Python进阶:生成器 懒人版本的迭代器详解
Jun 29 Python
python爬虫 正则表达式解析
Sep 28 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
基于python traceback实现异常的获取与处理
Dec 13 Python
Django实现后台上传并显示图片功能
May 29 Python
matplotlib.pyplot.plot()参数使用详解
Jul 28 Python
OpenCV图像变换之傅里叶变换的一些应用
Jul 26 Python
Python与C++中梯度方向直方图的实现
Mar 17 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关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
javascript英文日期(有时间)选择器
2007/05/02 Javascript
屏蔽script注入小例子
2013/11/12 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
JavaScript 跨域之POST实现方法
2018/05/07 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
2018/05/29 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
[59:36]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第二场
2018/04/04 DOTA
[51:52]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
python选择排序算法的实现代码
2013/11/21 Python
详解Python中的strftime()方法的使用
2015/05/22 Python
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
python 生成器协程运算实例
2017/09/04 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
Html5新增标签有哪些
2017/04/13 HTML / CSS
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
艺术用品:Arteza
2018/11/25 全球购物
出国留学介绍信
2014/01/13 职场文书
校园十佳歌手策划书
2014/01/22 职场文书
企业申诉管理制度
2014/01/30 职场文书
优秀女职工事迹材料
2014/02/06 职场文书
MySQL query_cache_type 参数与使用详解
2021/07/01 MySQL
js 数组 fill() 填充方法
2021/11/02 Javascript
PyTorch中permute的使用方法
2022/04/26 Python