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关键字and和or用法实例
May 28 Python
编写Python CGI脚本的教程
Jun 29 Python
Python探索之爬取电商售卖信息代码示例
Oct 27 Python
浅谈Python中的私有变量
Feb 28 Python
Python实现调用另一个路径下py文件中的函数方法总结
Jun 07 Python
python traceback捕获并打印异常的方法
Aug 31 Python
python使用requests.session模拟登录
Aug 09 Python
Python读取JSON数据操作实例解析
May 18 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
Jun 18 Python
解决keras模型保存h5文件提示无此目录问题
Jul 01 Python
Python爬虫开发与项目实战
Dec 16 Python
MoviePy常用剪辑类及Python视频剪辑自动化
Dec 18 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
使用Sphinx对索引进行搜索
2013/06/25 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
javascript parseInt与Number函数的区别
2010/01/21 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
2013/12/17 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
Python实现简易端口扫描器代码实例
2017/03/15 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
2018/04/28 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
python内打印变量之%和f的实例
2020/02/19 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
html5 标签
2009/07/16 HTML / CSS
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
研究生自荐信
2013/10/09 职场文书
实习生个人的自我评价
2013/12/08 职场文书
微信营销策划方案
2014/02/24 职场文书
语文教研活动总结
2014/07/02 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
贷款担保书范本
2015/09/22 职场文书
周一给客户的问候语
2015/11/10 职场文书
react antd实现动态增减表单
2021/06/03 Javascript