加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

代码详解:Python正则表达式的优秀使用指南

发布时间:2019-10-01 10:23:51 所属栏目:建站 来源:读芯术
导读:处理赏罚文本数据的一个首要使命就是建设很多以文本为基本的特征。 人们也许想要在文本中找出特命名目标内容,好比找出存在于文本中的电子邮件,可能大型文本中的电话号码。 固然想要实现上述成果听起来很繁琐,可是假如行使Python正则表达式模块,就可以使这
副问题[/!--empirenews.page--]

处理赏罚文本数据的一个首要使命就是建设很多以文本为基本的特征。

人们也许想要在文本中找出特命名目标内容,好比找出存在于文本中的电子邮件,可能大型文本中的电话号码。

代码详解:Python正则表达式的优越行使指南

固然想要实现上述成果听起来很繁琐,可是假如行使Python正则表达式模块,就可以使这一操纵越发简朴。

假设要在一篇特定的文章中找出标点标记的数目。以狄更斯的作品文本为例。

你凡是会怎么做?

最简朴的要领如下:

  1. target = [';','.',',','–'] 
  2. string = "It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way – in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only." 
  3. num _ points = 0 
  4. num_puncts = 0 
  5. for punct in target: 
  6.  if punct in string: 
  7.  num_puncts+=string.count(punct)print(num_puncts) 
  8. ------------------------------------------------------------------ 
  9. 19 

假如没有可支配的re模块,那就要用到上面的代码。但假若有re模块,则只需两行代码:

  1. import re 
  2. pattern = r"[;.,–]" 
  3. print(len(re.findall(pattern,string))) 
  4. ------------------------------------------------------------------ 
  5. 19 

本文接头的是最常用的正则表达式模式,以及一些常常行使的正则表达式函数。

什么是正则表达式?

简而言之,正则表达式(regex)用于试探给定字符串中的牢靠模式。

我们想找到的模式可所以任何对象。

可以建设相同于查找电子邮件或手机号码的模式。还可以建设查找以a开头、以z末了的字符串的模式。

在上面的例子中:

  1. import re 
  2. pattern = r'[,;.,–]' 
  3. print(len(re.findall(pattern,string))) 

我们想找出的模式是 r’[,;.,–]’。这个模式可找出想要的4个字符中的任何一个。regex101是一个用于测试模式的器材。将模式应用到方针字符串时,泛起出以下界面。

代码详解:Python正则表达式的优越行使指南

如图所示,可以在方针字符串中按照必要找到,;.,–。

每当必要测试正则表达式时,城市用到上面的器材。这比一次又一次运行python要快得多,调试也轻易得多。

此刻我们已经可以在方针字符串中找到这些模式,那么怎样真正建设这些模式呢?

建设模式

行使正则表达式时,起首必要进修的是怎样建设模式。

接下来将对一些最常用的模式举办一一先容。

可以想到最简朴的模式是一个简朴的字符串。

  1. pattern = r'times' 
  2. string = "It was the best of times, it was the worst of times." 
  3. print(len(re.findall(pattern,string))) 

但这并不是很有效。为了辅佐建设伟大的模式,正则表达式提供了非凡的字符/操纵符。下面来逐个看看这些操纵符。请守候gif加载。

1.[]操纵符

这在第一个例子中行使过,可用于找到切合这些方括号中前提的一个字符。

[abc]-将查找文本中呈现的全部a、b或c

[a-z]-将查找文本中呈现的全部从a到z的字母

[a-z0–9A-Z]-将查找文本中呈现的全部从A到Z的大写字母、从a到z的小写字母和从0到9的数字。

代码详解:Python正则表达式的优越行使指南

可以很轻易地在Python中运行下列代码:

  1. pattern = r'[a-zA-Z]' 
  2. string = "It was the best of times, it was the worst of times." 
  3. print(len(re.findall(pattern,string))) 

除了.findall,正则表达式尚有许多其他成果,稍后会涉及到。

2.点算符

点运算符(.) 用于匹配除换行符以外的任何字符。

运算符最大的利益是,它们可以团结行使。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读