python统计出现的中文标点_Python处理中文标点符号大集合

中文文本中可能出现的标点符号来源比较复杂,通过匹配等手段对他们处理的时候需要格外小心,防止遗漏。以下为在下处理中文标点的时候采用的两种方法:

中文标点集合

比较常见标点有这些:

!?。"#$%&'()*+,-/:;<=>@[\]^_`{|}~⦅⦆「」、、〃》「」『』【】〔〕〖〗〘〙〚〛〜〝〞〟〰〾〿–—‘'‛“”„‟…‧﹏.

调用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处理中文标点符号大集合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

时间: 2018-05-12

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构)

从hadoop框架与MapReduce模式中谈海量数据处理前言几周前&#xff0c;当我最初听到&#xff0c;以致后来初次接触Hadoop与MapReduce这两个东西&#xff0c;我便稍显兴奋&#xff0c;认为它们非常是神奇&#xff0c;而神奇的东西常能勾起我的兴趣&#xff0c;在看过介绍它们的文…

WPF过渡面板

WPF开发者QQ群&#xff1a; 340500857 | 微信群 -> 进入公众号主页 加入组织欢迎转发、分享、点赞、在看&#xff0c;谢谢~。 前言效果投稿来源于-郑竣僖 QQ&#xff1a;41130958301—效果预览效果预览&#xff08;更多效果请下载源码体验&#xff09;&#xff1a;一、Tra…

UScript中的Pow函数

这些天越来越发现数学的重要和妙趣了&#xff0c; 由于一些地方需要使用指数次幂来实现更好的效果&#xff0c; 想当然地去找pow函数&#xff0c;把Object和Actor翻了个底朝天 。。。 结果可想而知&#xff0c; 也正好&#xff0c;尝试了一把UScript和C的混编&#xff0c;但搜一…

PM与工程师

原文链接&#xff1a;http://firecacada.blog.163.com/blog/static/70743762011117114451722/ 过节前看到一篇文章&#xff0c;讲产品项目就应该由工程师来主导&#xff0c;但国内让PM去驱动项目&#xff0c;搞得乱七八糟&#xff0c;很恼火&#xff0c;怎么可能做出一款好产品…

哪些才是对女朋友的有效关心,来学习一下~

1 这本书真好&#xff0c;在哪里才能买得到呢&#xff1f;2 求求你&#xff0c;不要抢我的小毛虫&#xff01;3 所有的乘客请系好安全带4 小朋友非常可爱了5 字幕组真的尽力了&#xff01;6 学习了7 10月16日&#xff0c;平安南京 根据真实接警经历&#xff0c;发布一则警示案例…

fabric 转账_Fabric 学习笔记-架构初探

本文介绍了Fabric的架构&#xff0c;以及通过一个简单的Demo来熟悉整个交易流程。Hyperledger fabric V1.0的架构如下图所示&#xff1a;application提供各种语言的SDK接口。membership也就是fabric-ca提供成员服务&#xff0c;用来管理身份&#xff0c;提供授权和认证。peer负…

多个goruntine 性能变慢_提高 JavaScript 性能的 12 个技巧

作者丨Liz Parody在创建 Web 应用程序时应始终考虑性能。为了帮助你开始&#xff0c;本文列举了有效提高应用程序性能的 12 种方法。性能是创建网页或应用程序时最重要的一个方面。没有人想要应用程序崩溃或者网页无法加载&#xff0c;或者用户的等待时间很长。根据 Kissmetric…

#celery#周期性任务

2019独角兽企业重金招聘Python工程师标准>>> 玩了一个星期的clannad&#xff0c;是时候干点事了。 折腾了下celery周期性任务&#xff1a; celery提供了一个叫celery beat的服务&#xff0c;用于定时驱使worker执行任务。也就是说&#xff0c;如果本地没有活动的wor…

WTMPlus 1.1 发布

点击上方蓝字关注我们1.1版本WTMPlus上线一个多月以来&#xff0c;得到了越来越多用户的喜爱。虽然1.0版本还有不少问题&#xff0c;但是它的核心理念和功能受到了用户的认可。1.1版本修复了大量用户反馈的易用性的问题和系统Bug&#xff0c;并且加入了强悍的图表工具。图表编辑…

backgroundworder 简单使用

//手动创建backgroundworker组件///创建 private backgroundworker bgd new backgroundworker(); ///声明xmldoment private xmldoment doment null; /// Load 加载事件 private void Form1_Load(object sender , EventArgs e) { /// 执行操作 this.bgd.DoWorker delegate(ob…

4部“教材级”纪录片,有生之年必看系列!

全世界只有3.14 % 的人关注了爆炸吧知识纪录片是以真实生活为创作素材&#xff0c;以真人真事为表现对象&#xff0c;并对其进行艺术的加工与展现的&#xff0c;以展现真实为本质&#xff0c;并用真实引发人们思考的电影或电视艺术形式。好的纪录片就像打开了一扇新世界的大门&…

mysql数据恢复时显示多线程恢复_MySQL多线程备份恢复工具mydumper,myloder

mydumper备份时&#xff0c;数据和表结构是分开的&#xff0c;比如备份test表时&#xff0c;会生成test.sql文件和test.schema.sql文件。myloader导数据的时候默认不会记录二进制日志&#xff0c;即使你的sql_log_binon.准备安装介质&#xff1a;下载mydumper-0.6.2.tar.gz下载…

IM实现联系人及联系人分组的数据库设计

openfire中通过ofgroup/ofgroupprop/ofgroupuser实现组织结构中的分组&#xff0c;通过ofroster/ofrostergroups实现好友关系中的分组。但是呢&#xff0c;我们做二次开发的时候&#xff0c;希望能够有自己的个人联系人及分组&#xff0c;它没有确认过程&#xff0c;也就是说&a…

python生成器yield原理_Python generator生成器和yield表达式详解

前言Python生成器(generator)并不是一个晦涩难懂的概念。相比于MetaClass和Closure等概念&#xff0c;其较为容易理解和掌握。但相对于程序结构&#xff1a;顺序、循环和分支而言其又不是特别的直观。无论学习任何的东西&#xff0c;概念都是非常重要的。正确树立并掌握一些基础…

Java 操作POI 之复制sheet页

2019独角兽企业重金招聘Python工程师标准>>> 来点干货直接上代码&#xff0c;就不细说了 package com.qs.web.tools.core.excel; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.TreeSet; import org.apache.poi.hssf.us…

Serverless 落地实践

.Net Core Serverless初体验什么是ServerlessServerless 是一个当今软件世界中比较新的话题。它并没有一个普遍公认的权威定义&#xff0c;每个人每个企业对它的解释可能都有不同&#xff0c;而 Serverless 正是在这种情况下不断发发展的。但是就算如此&#xff0c;有一些 Serv…

KOFLive Beta Daily-Scrum 9

组 员今天的工作进 度问 题明天的计划田 飞Work Item 38911&#xff1a;角色四照片拍摄 Work Item 38897:键盘输入人物四的图片已经导入&#xff0c;键盘三个连键检测完成还剩最后一个连键的检测Work Item 38911:拍摄人物角色五付 浩Work Item 37741:游戏主模块 Work Item 3889…

出这样的题,出题人的良心确定不会痛吗?

全世界只有3.14 % 的人关注了爆炸吧知识“那些年&#xff0c;让我们气到吐血的题目。”数学篇

mysql怎么查看索引情况_mysql 查看索引使用情况

mysql 查看索引使用情况这是以读为主的线上库rootread 02:28:07>show status like ‘Handler_read%’;———————–——-| Variable_name | Value |———————–——-| Handler_read_first | 0 || Handler_read_key | 0 || Handler_read_ne…

iTextSharp应用,生成pdf

using iTextSharp.text; using iTextSharp.text.pdf; using System.IO; public void PDF(string html) { Document dom new Document(); //创建文档 PdfWriter.GetInstance(dom, new FileStream(Server.MapPath("test") Guid.NewGuid() "…