当你遇见了一个问题需要使用正则来处理,这个时候你就有了两个问题。

我主业是做图像处理,自然语言处理接触不多,正则表达式的研究并不深入,本文只讲述一些小技巧,如果你对正则表达式比较感兴趣,可以去看看有本书好像叫《Python 核心编程》。本文涉及的内容有两方面:你想要根据不止一个字符来分隔字符串;你想要把字符串中几种不同字符过滤掉或者替换成某种特定字符(串)。

本文给出了一个例子,我从《资治通鉴》中摘了一段话,想要提取其中的文字,过滤掉其中的标点符号。

import retext = "趙王封樂毅於觀津,尊寵之,以警動於燕、齊。燕惠王乃使人讓樂毅," \       "且謝之曰:「將軍過聽,以與寡人有隙,遂捐燕歸趙。將軍自為計則可矣," \       "而亦何以報先王這所以遇將軍之意乎?」樂毅報書曰:「昔伍子胥說聽" \       "於闔閭而吳遠跡至郢;夫差弗是也,賜之鴟夷而浮之江。吳王不寤先論" \       "之可以立功,故沈子胥而不悔;子胥不蚤見主之不同量,是以至於入江" \       "而不化。夫免自立功以明先王之跡,臣之上計也。離毀辱之誹謗,墮先王之名," \       "臣之所大恐也。臨不測之罪,以幸為利,義之所不敢出也。臣聞古之君子," \       "交絕不出惡聲,忠臣去國,不潔其名。臣雖不佞,數奉教於君子矣。" \       "唯君王之留意焉!」於是燕王復以樂毅子閒為昌國君,而樂毅往來復通燕," \       "卒於趙,號曰望諸君。"

此处我定义了一些中文标点符号,但是还没穷举所有的符号,如果你遇见了其他的需要自行加进去。这里是将中文符号替换成空格,如果只需要过滤掉的话,re.sub函数第二个参数改成一个空字符串就行了,非常的人性化。

此处是过滤掉多数非汉字内容,使用了unicode范围来确定是不是汉字,这里的范围并不只包含中国人使用的汉字,这个范围大概覆盖了CJK Unified Ideographs(中日韩统一表意文字列表),其中包含了中国、韩国、日本使用的多数常用汉字,可能还有越南使用的汉字。我这段《资治通鉴》是Traditional Chinese,对应的文字编码也涵盖在内。值得注意的是,这里的范围并不包含所有的汉字,一些偏难怪字并不在此范围内。如果你说想要过滤emoji、偏旁部首、注音符号之类的可以去检索一下对应的unicode范围。

这两行以标点符号将文本分割成小句,上面结果中包含了标点符号,下面结果不带。

我写出来的代码比较难懂,这里展示给你看的经过了我的简化只包含了正则本身相关的内容。总结起来说,正则表达式是你处理字符串的最终方案,相当强大,但是同样复杂,一般场景下只需要使用字符串自带的方法即可,比如字符串自带方法可以按照一种字符分割字符串,也可以将一种字符替换成另一种。

分割字符串_[话俾你知]Python使用正则处理字符串技巧(分割、替换)相关推荐

  1. c int转字符串_【C++实现python字符串函数库】字符串匹配函数startswith与endswith

    [C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...

  2. python将列表转换为字符串_每日一课 | Python将文件读入列表

    读取日志文件的Python示例,一行一行地进入列表. # With '\n', ['1\n', '2\n', '3'] with open('/www/logs/server.log') as f: ...

  3. python格式化字符串_阿博的Python之路详解String数据类型

    这是阿博的第16篇文章 之前分享了Python的Number数据类型,今天给大家详细讲一下我学习到Python的String数据类型.在日常开发当中String类型应该是我们最常使用到的数据类型,那么 ...

  4. python 列表转字符串_和你学Python之Python数据类型之数字、字符串和列表

    昨天学了python基础,今天开始学习数据类型,加油鸭! 惨绿青年:python有6种数据,分别是number(数字).string(字符串).list(列表).dictionary(字典).tupl ...

  5. c++ 查找 list中最长的字符串_查找不重复字符的最长子字符串(编程面试中常见题-用8种编程语言来回答)...

    查找不重复字符的最长子字符串(编程面试中常见题-用8种编程语言来回答) 给定一个字符串str,找到不重复字符的最长子字符串. 比如我们有 "ABDEFGABEF", 最长的字符串是 ...

  6. python字符串可以使用+进行计算吗_python用正则对字符串进行运算

    importredefnul_div(source):"""处理乘法和除法,先利用搜索出需要进行乘法和除法的表达式,然后利用正则将字符串分割,进行乘法和除法的运算 :pa ...

  7. android string拼接字符串_「JAVA」细述合理创建字符串,分析字符串的底层存储,你不该错过...

    Java基础之字符串操作--String 字符串 什么是字符串?如果直接按照字面意思来理解就是多个字符连接起来组合成的字符序列.为了更好的理解以上的理论,我们先来解释下字符序列,字符序列:把多个字符按 ...

  8. [转载] python十个程序_程序猿开发Python的十个基本入门技巧?

    参考链接: 程序员的11个基本Python技巧和窍门 Python是最受欢迎的语言之一.它的简洁性和高可读性使它在所有程序员中都很受欢迎. 所以这里有一些你可以用来启动你的Python编程游戏的技巧和 ...

  9. js 获取中括号里面字符串_西门子SCL编程入门教程连载(18)——字符串

    今天这篇文章,我们来聊聊西门子S7系列PLC的一种数据类型--字符串. 本文包括如下几个主题: 什么是字符串: 怎样声明字符串变量: 怎样给字符串变量赋值: 1.什么是字符串 字符串(string)是 ...

最新文章

  1. MATLAB中设置figure的边框
  2. php 单选按钮选中的值,在javascript中根据单选按钮选择更改变量值
  3. TIANCHI天池-OGeek算法挑战赛-完整方案及代码(亚军)
  4. 12C -- ORA-28040
  5. 如何手写代码进行页面布局
  6. vue 计算属性和data_Vue:计算属性
  7. 【POJ - 2226】Muddy Fields(匈牙利算法 或 网络流dinic,二分图匹配,最小点覆盖,矩阵中优秀的建图方式 )
  8. Java案例:连接SQL Server数据库,显示学生表记录
  9. 潮流渐变色彩的UI插画素材,吸睛没毛病
  10. java滚动条调整数值_急..JAVA 在画布上画拖动滚动条可扩大缩小的长方形
  11. PyTorch自定义CUDA算子教程与运行时间分析
  12. Linux-shell编程_xargs命令详解
  13. 在苹果Mac中将 WEBP 图片转成 JPG、PNG 格式的 2 种方法
  14. 百度网盘简易下载工具介绍
  15. EXCEL表格-矩阵法快速判断异常数据
  16. 分布式锁-Redis解决方案和Redisson解决方案
  17. 蓝桥六届 打印大X JAVA
  18. 入门51单片机(STC8952RC)定时器、有关中断原理简述、寄存器设置与程序示例(包括流水灯和计时器)
  19. 韩国国会表决通过中韩自贸协定批准案
  20. 适合初学者的java学习网站(1)

热门文章

  1. [Java工程师面试精选]Redis cluster集群模式的原理
  2. 五分钟看完 RocketMQ应用
  3. java.lang.NullPointerException空指针问题
  4. prometheus连续查询_Prometheus查询
  5. win2012服务器硬盘分区,Windows Server 2008/2012更改磁盘分区大小教程
  6. PHP获取地址栏信息
  7. db2 springboot 整合_springboot的yml配置文件通过db2的方式整合mysql的教程
  8. 怎么将jsp中var报错_招聘中不得将全日制作为限制性条件,怎么就不公平了?
  9. python多页网站目录_python 爬取页面所有的url
  10. Spring Cloud Alibaba迁移指南(二):零代码替换 Eureka