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 bsddb模块操作Berkeley DB数据库介绍
Apr 08 Python
理解python正则表达式
Jan 15 Python
Python实现网络端口转发和重定向的方法
Sep 19 Python
Django对数据库进行添加与更新的例子
Jul 12 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
Aug 06 Python
python numpy 常用随机数的产生方法的实现
Aug 21 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
python 实现将Numpy数组保存为图像
Jan 09 Python
利用django model save方法对未更改的字段依然进行了保存
Mar 28 Python
python图片验证码识别最新模块muggle_ocr的示例代码
Jul 03 Python
Python中使用ipython的详细教程
Jun 22 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
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
Laravel多域名下字段验证的方法
2019/04/04 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
2016/08/09 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
微信小程序 确认框的实现(附代码)
2019/07/23 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
Python中返回字典键的值的values()方法使用
2015/05/22 Python
Python中type的构造函数参数含义说明
2015/06/21 Python
详解Python sys.argv使用方法
2019/05/10 Python
python批量下载抖音视频
2019/06/17 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
python re模块常见用法例举
2021/03/01 Python
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
物流专业大学的自我评价
2014/01/11 职场文书
制作部班长职位说明书
2014/02/26 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
音乐节策划方案
2014/06/09 职场文书
调研座谈会发言材料
2014/08/23 职场文书
合作协议书模板2014
2014/09/26 职场文书
小学运动会加油稿
2015/07/22 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
SQL中的连接查询详解
2022/06/21 SQL Server