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实现DES加密解密方法实例详解
Jun 30 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
Feb 08 Python
python求最大连续子数组的和
Jul 07 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
Apr 25 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 Python
Django使用中间件解决前后端同源策略问题
Sep 02 Python
如何基于Python创建目录文件夹
Dec 31 Python
Python利用for循环打印星号三角形的案例
Apr 12 Python
python转化excel数字日期为标准日期操作
Jul 14 Python
python给视频添加背景音乐并改变音量的具体方法
Jul 19 Python
python线程池 ThreadPoolExecutor 的用法示例
Oct 10 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 ADODB使用方法集锦
2008/03/25 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
2011/10/13 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
2015/12/30 Javascript
原生JS查找元素的方法(推荐)
2016/11/22 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
JavaScript使用setTimeout实现倒计时效果
2021/02/19 Javascript
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
python处理大数字的方法
2015/05/27 Python
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
python删除列表内容
2015/08/04 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
python实现文件助手中查看微信撤回消息
2019/04/29 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
QML使用Python的函数过程解析
2019/09/26 Python
python实现IOU计算案例
2020/04/12 Python
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
企业口号大全
2014/06/12 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
开展党的群众路线教育实践活动总结报告
2014/10/31 职场文书
英文感谢信范文
2015/01/21 职场文书
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
经典《舰娘》游改全新动画预告 预定11月开播
2022/04/01 日漫
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers