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

中文标点集合

比较常见标点有这些:

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

调用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

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

  1. python替换所有标点符号 正则_Python处理中文标点符号大集合

    中文文本中可能出现的标点符号来源比较复杂,通过匹配等手段对他们处理的时候需要格外小心,防止遗漏.以下为在下处理中文标点的时候采用的两种方法: 中文标点集合 比较常见标点有这些: !?。"#$%& ...

  2. python标点符号分中英文嘛_Python处理中文标点符号大集合

    中文文本中可能出现的标点符号来源比较复杂,通过匹配等手段对他们处理的时候需要格外小心,防止遗漏.以下为在下处理中文标点的时候使用的两种方法: 中文标点集合 比较常见标点有这些: !?。"#$%& ...

  3. python中标点符号大全_Python处理中文标点符号大集合

    中文文本中可能出现的标点符号来源比较复杂,通过匹配等手段对他们处理的时候需要格外小心,防止遗漏.以下为在下处理中文标点的时候采用的两种方法: 中文标点集合 比较常见标点有这些: !?。"#$%& ...

  4. python统计列表中元素个数_python中计算一个列表中连续相同的元素个数方法

    python中计算一个列表中连续相同的元素个数方法 最简单的例子: a = [1,1,1,1,2,2,2,3,3,1,1,1,3] # 问:计算a中最多有几个连续的1 很明显,答案是4 如果用代码实现 ...

  5. python加中文注释_Python使用中文注释和输出中文(原创)

    刚开始学习python,需要在Python中注释中文和输出中文,现在开始尝试: 仅为初步学习参考,高手请绕行. -------------------------------------------- ...

  6. python中文字符_python处理中文字符

    1.在py文件中使用中文字符 unicode.py文件内容如下所示: # -*- coding:utf-8 -*- str_ch = '我们women' uni_ch = u'我们women' pri ...

  7. python 统计组合用什么库_Python数据科学,用这些库就够了

    为了方便学习,本文列出的20个Python库将按领域进行分类,有些你可能并不熟悉,但是真的能提高你的模型算法实现效率,多一点尝试,多一些努力! ▌核心库和统计数据 1. NumPy (Commits: ...

  8. python数字转中文字符_Python实现中文数字转换为阿拉伯数字的方法示例

    本文实例讲述了Python实现中文数字转换为阿拉伯数字的方法.分享给大家供大家参考,具体如下: 一.需求 今天写了三千二百行代码. 今天写了3200行代码. 两行意思相同,只是表达方式不太能够,统一掉 ...

  9. 阿里云python中文社区_python写中文

    字符串 你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码.当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行: ```pytho ...

最新文章

  1. 解决Visual Studio For Mac Restore失败的问题
  2. 朋友问我学习高并发需不需要阅读源码,我是这样分析的!!
  3. ViaWest公司的光纤将连接微软新的跨太平洋电缆
  4. Dataset之MNIST:自定义函数mnist.load_mnist根据网址下载mnist数据集(四个ubyte.gz格式数据集文件)
  5. javaI/O之PushbackInputStream
  6. flink运行原理_浅谈Flink分布式运行时和数据流图的并行化
  7. spock 集成测试_使用Spock 1.2简化对遗留应用程序的集成测试
  8. Silverlight 布局控件
  9. 每日一题(46)—— volatile
  10. 禅道项目管理_推荐一个项目管理工具,落地基于Scrum的敏捷开发!
  11. Hexo NexT主题添加点击爱心效果
  12. JUC与JVM并发编程学习笔记02
  13. Java 编程之美:并发编程基础晋级篇
  14. SAS means 过程帮助
  15. 基于GPS的车辆导航及GPRS网络监控
  16. 大学四年的总结与感受
  17. NYOJ 366 (全排列)
  18. dojo基础:dojo/request
  19. 自动弹出 微信授权登录窗口
  20. HDU2058 The sum problem(数学问题)

热门文章

  1. 从零开始使用Skywalking分布式链路追踪系统
  2. .NET Core3发布Json API
  3. github开源项目免费使用Azure PipeLine
  4. 开源分享 Unity3d客户端与C#分布式服务端游戏框架
  5. 一步步学习EF Core(1.DBFirst)
  6. 分布式事务与一致性算法Paxos amp; raft amp; zab
  7. Python FastApi:快速建立docker容器/挂载共享文件夹/导入导出
  8. Vue在渲染函数createELement和JSX中使用插槽slot
  9. C语言试题四十八之该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
  10. Android之解决主页面Activity监听fragment退出问题(由NavHostFragment和RxFragment一起管理fragment)