数据采集与清洗基础习题(三)Python正则表达式,头歌参考答案

数据采集习题参考答案,会持续更新,点个关注防丢失。

创作不易,一键三连给博主一个支持呗。为了方便查找,已按照头歌重新排版,朋友们按照头歌所属门类查找实训哦,该篇为Python正则表达式

文章目录

实训一:正则表达式入门

第一关:查找第一个匹配的字符串

第一关答案

第二关:基础正则表达式--字符组

第二关答案

第三关:基础正则表达式--区间与区间取反

第三关答案

第四关:基础正则表达式--快捷方式

 第四关答案

第五关:字符串的开始与结束

第五关答案

第六关:任意字符

 第六关答案

第七关:可选字符

 第七关答案

第八关:重复区间

 第八关答案

第九关:开闭区间与速写

第九关答案 

实训二:Python正则表达式断言

第一关:先行断言

第一关答案

第二关:后发断言

第二关答案

实训三:Python正则表达式标记 

实训三答案


实训一:正则表达式入门

第一关:查找第一个匹配的字符串

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充

具体任务如下:

  • 导入相关包;

  • 查看此信息是不是张明的信息,查找结果存储在is_zhangming变量中。

相关知识

为了完成本关任务,你需要掌握:

  1. 如何在 python 中引入正则表达式库;
  2. re库中search方法的使用。

1、在Python 中使用正则表达式

正可谓人生苦短,我用PythonPython有个特点就是库非常多,自然拥有正则匹配这种常见的库,并且此库已经嵌入在Python标准库中,使用起来非常方便,只需要在代码中导入re模块即可。

import re

Pythonre模块,使得Python具备了使用全部正则表达式的功能。为了让我们灵活的使用正则表达式,现在咱们的任务就是学习正则在re库中的使用。

2、最基础正则表达式

正则表达式是一个以简单直观的方式通过寻找模式匹配文本的工具。 听起来比较复杂,实际非常简单,下面开始体验最简单的正则表达式。最简单的正则表达式是些仅包含简单字母数字字符的表达式——不包含任何其他字符,在这种情况下正则表达式完完全全就是一个正常的字符串。

举例说明,我们要匹配张明,那么张明这两个字符就是我们需要的正则表达式。

3、正则匹配函数

知道了最基础正则表达式,可是如何在python中使用了?首先我们学习第一个函数,search()函数,它的目的是接收一个正则表达式和一个字符串,并返回发现的第一个匹配的字符串。

import rea = re.search(r'fox','the quick brown fox jumpred') #第一个参数为正则表达式,第二个参数为要处理的字符串
print(a.span()) # span方法获取的是正则表达式匹配到的位置b = re.search(r'www','the quick brown fox jumpred')
print(b) #如果匹配不到则会返回None

输出如下:

  1. (16, 19)
  2. None

如何匹配到了,我们输出他在正则表达式中的位置,如果没有匹配到,则输出为空。

第一关答案

# coding=utf-8# 在此导入python正则库
########## Begin ##########
import re########## End ##########check_name = input()
# 在此使用正则匹配'张明'的信息,结果存储到is_zhangming中
########## Begin ##########is_zhangming=re.search(r'张明',check_name)########## End ##########if is_zhangming is not None:print(is_zhangming.span())
else:print(is_zhangming)

第二关:基础正则表达式--字符组

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充

具体任务如下:

  • 从文本中快速匹配到pythonPython的小程序,输出匹配到的所有内容。

相关知识

为了完成本关任务,你需要掌握:

1.正则表达式的字符组的表达方式;

2.Pythonre模块中获取多个匹配的使用方法。

在上一个任务中,已经了解了只包含简单字母数字的正则表达式,但如果仅仅如此,那么太小瞧正则表达式的威力了。正则表达式强大的地方在于能够指定用于匹配的文本模式。本关来学习正则表达式的字符组匹配。

1、获得多个匹配信息

在很多常见的场景中需要进行多个匹配,比如在学生名单中过滤出所有的张姓学生的个数。

如果有这种需求咱们可以使用re模块中的findall 或者 finditer方法。两个方法的区别在于 findall 返回的是一个列表,finditer返回的是一个生成器。

l = re.findall(r'张','张三 张三丰 张无忌 张小凡')
print(l)
['张', '张', '张', '张']

在这个例子中,我们会发现findall返回了4个“张”,这是因为“张”字在后面的字符串中出现了4次。即findall返回了所有的匹配信息。

2、字符组

字符组允许匹配一组可能出现的字符,在正则表达式中用[]表示字符组标志,举个例子。

'I like Python3 and I like python2.7 '

在这句话中,既有大写的Python,又有全部是小写的python。如果我要求都匹配出来,这时候该怎么操作了?这就是正则匹配中字符组的威力了。下面看下示例。

a = re.findall(r'[Pp]ython','I like Python3 and I like python2.7 ')
print(a)

输出结果:['Python', 'python'] 

可以发现[Pp]既可以匹配大写的P也可以匹配小写的p,这里值的我们注意的是[Pp]仅匹配一个字符,他表示匹配在这个[]内的某一个。

第二关答案

# coding=utf-8import reinput_str = input()# 编写获取python和Python的正则,并存储到match_python变量中########## Begin ##########
match_python=re.findall(r'[Pp]ython',input_str)########## End ##########print(match_python)

第三关:基础正则表达式--区间与区间取反

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充

具体任务如下:

  • 匹配数字字符信息;

  • 匹配不是数字字符的信息。

相关知识

为了完成本关任务,你需要掌握:

1.正则表达式区间的表达方式;

2.正则表达式区间取反的表达方式。

本关来学习正则表达式区间与区间取反的相关知识。

1.区间

有一些常见的字符组非常大,比如,我们要匹配的是任意数字,如果依照上述代码,每次我们都需要使用[0123456789] 这种方式明显很不明智,而如果要匹配从a-z的字母,我们也这样编写代码的话,肯定会让我们崩溃。

为了适应这一点,正则表达式引擎在字符组中使用连字符(-)代表区间,所以我们匹配任意数字可以使用[0-9],所以如果我们想要匹配所有小写字母,可以写成[a-z],想要匹配所有大写字母可以写成[A-Z]

可能我们还有个需求:匹配连字符。因为-会被正则表达式引擎理解为代表连接区间,所以这个时候我们需要对-进行转义。

示例:

a = re.findall(r'[0-9]','xxx007abc')
b = re.findall(r'[a-z]','abc001ABC')
c = re.findall(r'[A-Za-z0-9]','abc007ABC')
d = re.findall(r'[0-9\-]','0edu 007-edu')
print(a)
print(b)
print(c)
print(d)

执行结果如下:

  1. ['0', '0', '7']
  2. ['a', 'b', 'c']
  3. ['a', 'b', 'c', '0', '0', '7', 'A', 'B', 'C']
  4. ['0', '0', '0', '7', '-']

2.区间取反

到目前为止,我们定义的字符组都是由可能出现的字符定义,不过有时候我们可能希望根据不会出现的字符定义字符组,例如:匹配不包含数字的字符组。

a = re.findall(r'[^0-9]','xxx007abc')
b = re.search(r'[^0-9]','xxx007abc')
print(a)
print(b)

执行结果如下:

  1. ['x', 'x', 'x', 'a', 'b', 'c']
  2. <re.Match object; span=(0, 1), match='x'>

可以通过在字符数组开头使用 ^ 字符实现取反操作,从而可以反转一个字符组(意味着会匹配任何指定字符之外的所有字符)。

接下来再看一个表达式:n[^e] 这意味着字符n接下来的字符是除了e之外所有的字符。

a = re.findall(r'n[^e]','final')
b = re.search(r'n[^e]','final')
c = re.findall('r[n[^e]]','Python')
print(a)
print(b)
print(c)

执行结果如下:

  1. ['na']
  2. <re.Match object; span=(2, 4), match='na'>
  3. []

这里我们可以发现ab匹配的是na,字符a因为不是e所以可以被匹配,而变量c的值为空,在这里正则表达式引擎只匹配到了字符串n的位置,而n之后没有任何可以匹配[^e]的字符了,所以这里也匹配失败。

第三关答案

# coding=utf-8import reinput_str = input()# 1、编写获取到数字的正则,并输出匹配到的信息
########## Begin ##########
a=re.findall(r'[0-9]',input_str)
print(a)
########## End ########### 2、编写获取到不是数字的正则,并输出匹配到的信息
########## Begin ##########
b=re.findall(r'[^0-9]',input_str)
print(b)
########## End ##########

第四关:基础正则表达式--快捷方式

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充

具体任务如下:

  • 匹配单词字符,并输出;
  • 匹配不是单词的字符,并输出。

相关知识

为了完成本关任务,你需要掌握:

1.正则表达式快捷方式的表达方式;

2.正则表达式快捷方式取反的表达方式;

本关来学习正则表达式的快捷方式与快捷方式取反。

快捷方式

在正则表达式的使用过程中,人们为了快捷表达与方便阅读,提取了几种普通字符组,并在正则表达式引擎中预定义了其快捷方式。如果我们想要定义单词,以目前学到的可能会使用[A-Za-z],但是,很多单词都是使用该字母以外的字符。比如中文,以及其他语言。

正则表达式引擎提供了一些快捷方式:

快捷方式描述
\w与任意单词匹配
\d与任意数字匹配
\s匹配空白字符,比如空格,换行等
\b匹配一个长度为0的子串

示例1

a = re.findall(r'\w','学好Python 大展拳脚')
b = re.search(r'\w','python3')
c = re.search(r'\d','编号89757')
print(a)
print(b)
print(c)

执行结果输出如下:

  1. ['学', '好', 'P', 'y', 't', 'h', 'o', 'n', '大', '展', '拳', '脚']
  2. <re.Match object; span=(0, 1), match='p'>
  3. <re.Match object; span=(2, 3), match='8'>

注:这里findall会返回所有能匹配的值,search只会返回第一个匹配到的值。

 快捷方式取反

之前提到了取反,快捷方式也可以取反, 例如对于 \w的取反为\W,可以发现将小写改写成大写即可。

注意:这里\B 有所不同, \b 匹配的是在单词开始或结束位置长度为0的子字符串,而\B匹配不在单词开始和结束位置的长度为0的子字符串。

a = re.findall(r'\Bmaster\B','masterxiao master xxx master abc') #单词字符后面或前面不与另一个单词字符直接相邻
b = re.search(r'master\B','masterxiao')print(a)
print(b)

执行结果输出如下:

  1. []
  2. <re.Match object; span=(0, 6), match='master'>

 第四关答案

# coding=utf-8import reinput_str = input()# 1、编写获取到单词的正则,并输出匹配到的信息
########## Begin ##########
a=re.findall(r'\w',input_str)
print(a)########## End ########### 2、编写获取到不是单词的正则,并输出匹配到的信息
########## Begin ##########
b=re.findall(r'\W',input_str)
print(b)########## End ##########

第五关:字符串的开始与结束

任务描述

本关任务:使用正则表达式的方法编写一个小程序。该程序可以: 1、匹配到该字符串是否以educoder开头,并输出该字符串的位置; 2、匹配到该字符串是否以educoder结尾,并输出该字符串的位置。

相关知识

为了完成本关任务,你需要掌握: 1.正则表达式字符串开始的使用方法; 2.正则表达式字符串结束的使用方法。

字符串的开始和结束

在日常生活中,一个事情的开始与结束都是一件比较重要的事情,在字符串匹配的过程中也是如此,字符串的开始与结束式一个重要的特征。比如我们要获取判断字符串是否以python开头,是否以python结尾。

对于这种情况,之前匹配方法就有点不够用了,因此在正则表达式中 用^ 可以表示开始,用 $表示结束,示例如下:

a = re.search(r'^python', 'python is easy')
b = re.search(r'python$', 'python is easy')
c = re.search(r'^python', 'i love python')
d = re.search(r'python$', 'i love python')
print(a.span())
print(b)
print(c)
print(d.span())

执行输出结果如下:

  1. (0, 6)
  2. None
  3. None
  4. (7, 13)

可以发现,在上述例子中,python is easyi love python都存在python字符串,但是一个在开头一个在结尾,因此变量a和变量d都匹配到了信息。其他则无法匹配到信息。

第五关答案

# coding=utf-8import reinput_str = input()# 1、编写获取到以educoder开头的正则,并存储到变量a
########## Begin ##########
a=re.search(r'^educoder',input_str)########## End ##########
if a is not None:print(a.span())
else:print(a)# 2、编写获取到以educoder结束的正则,并存储到变量b
########## Begin ##########
b=re.search(r'educoder$',input_str)########## End ##########
if b is not None:print(b.span())
else:print(b)

第六关:任意字符

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充

具体任务如下:

  • 匹配出测试集中的包含(任意字符)ython的子字符串,并输出数组子字符串。

相关知识

为了完成本关任务,你需要掌握:

  1. 正则表达式通配符的使用;
  2. python正则表达式编程。

通配符

在生活中我们经常会有这么一种场景,我们记得某个人名为孙x者,就是不记得他叫孙行者,在正则表达式中针对此类场景,产生了通配符的概念,用符号.表示。它代表匹配任何单个字符,不过值得注意的是,它只能出现在方括号字符组以外

值得注意的是:.字符只有一个不能匹配的字符,也就是换行(\n),不过让.字符与换行符匹配也是可能的,以后会讨论。示例如下:

a = re.findall(r'p.th.n','hello python re')
b = re.findall(r'p.....','学好 python 人见人爱')print(a)
print(b)

输出:

  1. ['python']
  2. ['python']

 第六关答案

# coding=utf-8import reinput_str = input()# 编写获取(任意字符)+ython的字符串,并存储到变量a中
########## Begin ##########
a=re.findall(r'.ython',input_str)########## End ##########
print(a)

第七关:可选字符

任务描述

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

  • 匹配出字符串中的she或者he,并输出匹配到的信息。

相关知识

为了完成本关任务,你需要掌握:

1.正则表达式可选字符的使用方法;

2.python正则表达式编程。

到目前为止,我们看到的正则表达式都是在正则表达式中的字符与被搜索的字符串中的字符保持1:1的关系。不过有时,我们可能想要匹配一个单词的不同写法,比如colorcolour,或者honorhonour。这个时候我们可以使用 ? 符号指定一个字符、字符组或其他基本单元可选,这意味着正则表达式引擎将会期望该字符出现零次或一次

a = re.search(r'honou?r','He Served with honor and distinction')
b = re.search(r'honou?r','He Served with honour and distinction')
c = re.search(r'honou?r','He Served with honou and distinction')
print(a)
print(b)
print(c)

执行结果输出如下:

  1. <re.Match object; span=(15, 20), match='honor'>
  2. <re.Match object; span=(15, 21), match='honour'>
  3. None

可以发现,在上述三个例子中,正则表达式为honou?r,这里可以匹配的是 honorhonour 不能匹配 honou,可以知道的是 ? 确定了前一个u是可选的。在第一个示例中,没有u,是没有问题可以匹配的;在第二个示例中,u存在这也没有问题;在第三个例子中,u存在但是r不存在,这样就不能匹配了。

 第七关答案

# coding=utf-8import reinput_str = input()# 编写获取she或者he的字符串,并存储到变量a中
########## Begin ##########
a=re.findall(r's?he',input_str)########## End ##########
print(a)

第八关:重复区间

任务描述

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,匹配并输出符合如下要求的字符串:

1、字符串中重复2个数字的子字符串;

2、重复4-7个数字组成的子字符串。

相关知识

为了完成本关任务,你需要掌握:

1.正则表达式重复区间的表达方法;

2.Python正则编程。 

在正则表达式在一个字符组后加上{N} 就可以表示 {N} 之前的字符组出现N次。举个例子:

a = re.findall(r'[\d]{4}-[\d]{7}','张三:0731-8825951,李四:0733-8794561')
print(a)

输出为: ['0731-8825951', '0733-8794561']

可能有时候,我们不知道具体匹配字符组要重复的次数,比如身份证有15位也有18位的。

这里重复区间就可以出场了,语法:{M,N}M是下界而N是上界。

举个例子:

a = re.search(r'[\d]{3,4}','0731')
b = re.search(r'[\d]{3,4}','073')print(a)
print(b)

执行结果输出如下:

<re.Match object; span=(0, 4), match='0731'>

<re.Match object; span=(0, 3), match='073'>

 第八关答案

# coding=utf-8import reinput_str = input()
# 1、基于贪心模式匹配字符串中重复出现2个数字的子字符串,并存储到变量a。########## Begin ##########
a=re.findall(r'[\d]{2}',input_str)########## End ##########
print(a)# 2、基于贪心模式匹配字符串中重复出现4-7个数字的子字符串,并存储到变量b。
########## Begin ##########
b=re.findall(r'[\d]{4,7}',input_str)########## End ##########
print(b)

第九关:开闭区间与速写

任务描述

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,匹配并输出符合如下要求的字符串:

  • 重复数字5次及以上的子字符串;

  • 重复数字1次及以上的子字符串。

相关知识

1.正则表达式重复基本知识;

2.正则表达式开闭区间的基本知识;

3.正则表达式重复速写的方法。

符号含义
‘+’重复匹配1个或多个
‘*’重复匹配0个或多个

 符号+用来表示重复一次到无数次,如下示范:

a = re.findall(r'[\d]+','0731-8859456')
print(a)

输出结果:['0731', '8859456']

符号'*'用来表示重复 0次到无数次,如下示范:

a = re.findall(r'[\d]*','0731-8859456')
print(a)

输出结果:['0731', '', '8859456', ''] 

第九关答案 

# coding=utf-8import reinput_str = input()
# 1、基于贪心模式匹配字符串中连续出现5个数字以上的子字符串,并存储到变量a。########## Begin ##########
a=re.findall(r'[\d]{5,}',input_str)########## End ##########
print(a)# 2、匹配字符串中都为数字的子字符串,并存储到变量b。
########## Begin ##########b=re.findall(r'[\d]+',input_str)
########## End ##########
print(b)

实训二:Python正则表达式断言

第一关:先行断言

编程要求

请根据相关知识补充右侧Begin-End之间的代码,并完成下列任务:

  • 使用正向先行断言获取字符串中以ing结尾的字符(不能为空)。

相关知识

先行断言分为正向先行断言反向先行断言,完成本关任务需要了解这两个知识点。

正向先行断言

(?=pattern)表示正向先行断言,整个括号里的内容(包括括号本身)代表字符串中的一个位置,紧接该位置之后的字符序列能够匹配pattern。举个例子:

# `(?!e)`代表字符串中的一个位置,紧接该位置之后的字符序列只能够匹配`e`。
a = re.findall(r'n(?=al)','final')
b = re.findall(r'n(?=e)','python')
c = re.findall(r'n(?=e)','jasmine')print(a)
print(b)
print(c)

输出:

  1. ['n']
  2. []
  3. ['n']

反向先行断言

(?!pattern)表示反向先行断言,与正向先行断言相反,紧接该位置之后的字符序列不能够匹配pattern。同样举个例子:

a = re.findall(r'n(?!e)','final')
b = re.findall(r'n(?!e)','python')
c = re.findall(r'n(?!e)','next')print(a)
print(b)
print(c)

输出:

  1. ['n']
  2. ['n']
  3. []

注意:反向断言不支持匹配不定长的表达式,也就是说+*字符不适用于反向断言的前后

第一关答案

import rea = input()#*********** Begin **********#
result=re.findall(r'[\w]+(?=ing)',a)
#*********** End **********#
print(result)

第二关:后发断言

编程要求

请根据相关知识补充右侧Begin-End之间的代码,并完成下列任务:

  • 使用正向后发断言匹配字符串中以go开头的字符的后半部分。

相关知识

后行断言分为正向后发断言反向后发断言,完成本关需要掌握这两个知识点。

正向后发断言

(?<=pattern)正向后发断言代表字符串中的一个位置,紧接该位置之的字符序列只能够匹配pattern

a = re.findall('(?<=a)n','final')
b = re.findall('(?<=a)n','command')
c = re.findall('(?<=i)n','negative')print(a)
print(b)
print(c)

输出:

  1. []
  2. ['n']
  3. []

反向后发断言

(?<!pattern)负向后发断言 代表字符串中的一个位置,紧接该位置之的字符序列不能匹配pattern

a = re.findall('(?<!i)n','final')
b = re.findall('(?<!a)n','command')
c = re.findall('(?<!i)n','negative')print(a)
print(b)
print(c)

输出:

  1. []
  2. []
  3. ['n']

从上面的描述可以看出,先行和后发的区别就是判断是否有<,正向与反向的区别是=。是不是非常容易记呢?

第二关答案

import rea = input()#*********** Begin **********#
result=re.findall(r'(?<=go)[\w]+',a)
#*********** End **********#
print(result)

实训三:Python正则表达式标记 

正则表达式可以包含一些可选标记修饰符来控制匹配的模式。修饰符被指定为一个可选的标记。多个标记可以通过按位OR(|)来指定。如re.I | re.M 被设置成IM标志。

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充

具体任务如下:

  • 匹配出以study开头的邮箱,不区分大小写。

相关知识

为了完成本关任务,你需要掌握:

1.Python正则表达式基本用法;

2.Python正则表达式标记。

不区分大小写

re.IGNORECASE也可以简写为re.I,使用该标记,可以使正则表达式变为不区分大小写。 示例:

a = re.search(r'apple',"THIS IS AN APPLE",re.IGNORECASE)
b = re.search(r'apple','THIS IS AN APPLE',re.I)
print(a)
print(b)

输出:

  1. <_sre.SRE_Match object; span=(11, 16), match='APPLE'>
  2. <_sre.SRE_Match object; span=(11, 16), match='APPLE'>

点匹配换行符

re.DOTALL标记(别名为re.S)可以让.字符除了匹配其他字符之外,还匹配换行符。 示例:

a = re.search(r'.+','hello\npython')
b = re.search(r'.+','hello\npython',re.S)
c = re.search(r'.+','hello\npython',re.DOTALL)
print(a)
print(b)
print(c)

输出:

  1. <_sre.SRE_Match object; span=(0, 5),match='hello'>
  2. <_sre.SRE_Match object; span=(0, 12),match='hello\npython'>
  3. <_sre.SRE_Match object; span=(0, 12),match='hello\npython'>

多行模式

re.MULTILINE标记(别名为re.M)可以匹配多行,使用该标记可以使得仅能够匹配字符串开始与结束的^$字符可以匹配字符串内任意行的开始与结束。

a = re.search(r'^like','foo\nlike')
b = re.search(r'^like','foo\nlike',re.M)
print(a)
print(b)

输出:

  1. None
  2. <_sre.SRE_Match object; span=(4, 8), match='like'>

详细模式

re.VERBOSE标记(别名为re.X)允许复杂的正则表达式以更容易的方式表示。 该标记做两件事,首先,它会使所有的空白(除了字符组中)被忽略,包括换行符。其次,它将#字符(同样,除非在字符组内)当做注释字符。 示例:

a = re.search(r'(?P<first>[\d]{3})-(?P<second>[\d]{4})','867-5556')
b = re.search(r"""(?P<first>[\d]{3})
- #匹配一个 - 连接符
(?P<second>[\d]{4}) # 匹配四个数字
""",
'010-1234',re.X)
print(a)
print(b)

输出:

  1. <_sre.SRE_Match object; span=(0, 8), match='010-1234'>
  2. <_sre.SRE_Match object; span=(0, 8), match='010-1234'>

调试模式

re.DEBUG标记(没有别名)在编译正则表达式时将一些调试信息输出到 sys.stderr。 示例:

a = re.search(r'(?P<first>[\d]{3})-(?P<second>[\d]{4})','010-1234',re.DEBUG)
print(a)

输出:

  1. SUBPATTERN 1
  2. MAX_REPEAT 3 3
  3. IN
  4. CATEGORY CATEGORY_DIGIT
  5. LITERAL 45
  6. SUBPATTERN 2
  7. MAX_REPEAT 4 4
  8. IN
  9. CATEGORY CATEGORY_DIGIT
  10. <_sre.SRE_Match object; span=(0, 8), match='010-1234'>

使用多个标记

有时候我们可能需要同时使用多个标记,为了完成这点,可以使用|操作符。 示例: re.DOTALL|re.MULTILINEre.S | re.M

实训三答案

import re
def re_mark(input_data):result=[]#*********** Begin **********#result = re.findall(r'^study[\w]*@[\w]+\.com',input_data,re.I|re.M)#*********** End **********#return result

数据采集习题参考答案,会持续更新,点个关注防丢失。

创作不易,一键三连给博主一个支持呗。

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

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

相关文章

应用电子技术插计算机科学,插本专业大全

广州大学&#xff1a;工商管理工程管理法学五邑大学&#xff1a;会计学电子商务电子信息工程电子信息工程(职教师资班)通信工程(计算机通信网络方向)机电工程及自动化机电工程及自动化(职教师资班)土木工程工业设计韶关学院&#xff1a;汉语言文学国际经济与贸易工商管理会计学…

不同进制之间的转化

将二进制、八进制、十六进制转换为十进制 二进制、八进制和十六进制向十进制转换都非常容易&#xff0c;就是“按权相加”。所谓“权”&#xff0c;也即“位权”。 假设当前数字是 N 进制&#xff0c;那么&#xff1a; 对于整数部分&#xff0c;从右往左看&#xff0c;第 i 位…

[刨根问底] 五分钟搞懂组合评价模型—模糊Borda (以2021 年大学生数模国赛C题为例)

组合评价模型—模糊Borda(Matlab) 我们的征途是星辰大海&#xff0c;而并非烟尘人间。 目录 组合评价模型—模糊Borda(Matlab) 一、模糊Borda法简介 二、模糊Borda法主要步骤 &#xff08;1&#xff09;计算隶属度 &#xff08;2&#xff09;计算模糊频数 &#xff08;…

计算机桌面右键新建展不开,Win10右键新建不见了怎么办?Win10电脑桌面右键新建没有了解决方法...

近期有Win10用户遇到一个问题&#xff0c;也就是电脑桌面右键新建没有了&#xff0c;比如想要创建一个文本文档、文件夹、Word&#xff0c;没有新建功能无法创建&#xff0c;那么Win10右键新建不见了怎么办&#xff1f;下面装机之家分享一下Win10电脑桌面右键新建没有了解决方法…

最常用的客观赋权方法——熵权法

我们的征途是星辰大海&#xff0c;而并非烟尘人间。 文章目录 一、熵权法的原理 1.1 信息熵 1.2 熵权法 二、熵权法的主要步骤 2.1 数据标准化 2.2 求各指标在各方案下的比值 2.3 求各指标的信息熵。 2.4 确定各指标的权重 2.4.1 通过信息熵计算各指标的权重&#…

2017韩老师计算机网络,2017年计算机等考三级网络技术辅导:计算机网络拓扑结构...

1&#xff0e;计算机网络拓扑的定义计算机网络设计的第一步就是网络拓扑设计。拓扑学是几何学的一个分支。计算机网络拓扑是通过网中结点与通信线路之间的几何关系表示网络结构&#xff0c;反映出网络各实体之间的结构关系。2&#xff0e;网络拓扑的分类网络拓扑可以根据通信子…

Spring Boot html页面解析之jsoup

目的 我们要对一个页面进行数据抓取&#xff0c;并导出doc文档 html解析器 jsoup 直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API&#xff0c;可通过DOM&#xff0c;CSS以及类似于JQuery的操作方法来取出和操作数据。 htmlparser 提供了线性和嵌套两种方…

2021年五一杯数学建模A题(疫苗生产调度问题)详细分析

目录 一、基本介绍 1.1 题目描述 1.2 待解决问题 二、问题分析与求解 2.1 问题一分析与求解 2.2 问题二分析与求解 2.3 问题三分析与求解 2.4 问题四分析与求解 2.5 问题五分析与求解 三、完整代码 四、总结 一、基本介绍 1.1 题目描述 新冠肺炎肆虐全球&#xff0…

计算机网络云南大学实验四,云南大学软件学计算机网络原理实验四.doc

云南大学软件学计算机网络原理实验四实验四、web服务器套接字编程实验指导1&#xff0e;实验目的&#xff1a;编写一个WEB服务器程序&#xff0c;可以接受来自浏览器的访问&#xff0c;并传输页面(包含多个对象)到浏览器。掌握Socket编程。2&#xff0e;实验环境&#xff1a;连…

Spring Boot EasyPoi导出Excel下载

Java关于excel的操作 Java Excel俗称jxl&#xff0c;可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件&#xff0c;现在基本没有更新了 Apache POI是Apache基金组织Jakarta项目的子项目&#xff0c;它包括一系列的API&#xff0c;可以操作多种格式的Mic…

2021年华中杯A题(马赛克瓷砖选色问题)详细分析

目录 一、基本介绍 1.1 题目描述 1.2 待解决问题 二、问题分析与求解 2.1 问题一分析与求解 2.2 问题二分析与求解 2.3 问题三分析与求解 三、完整代码 四、总结 一、基本介绍 1.1 题目描述 马赛克瓷砖是一种尺寸较小&#xff08;常见规格为边长不超过 5cm&#xff09…

计算机无法连接无线信号,win7系统连接无线信号时提示Windows无法连接到路由器名称的四种解决方法...

现如今网络发展速度非常快&#xff0c;无线网络已经普及了&#xff0c;使用率高了遇到的问题也就多了。比如有时候笔记本win7系统连接无线信号时出现“Windows无法连接到路由器名称”(如下图所示)&#xff0c;该如何解决此问题呢&#xff1f;下面脚本之家的小编介绍几种解决方法…

Spring Boot 注解定时任务

注解 Scheduled(cron “0/5 * * * * ?”) 相当于原来的xml版本的如下配置 <task:scheduled ref"scheduledTask" method"getTask1" cron"0/5 * * * * ?" />定时任务类ScheduledTask package com.jege.spring.boot.task;import java.t…

数据采集与清洗基础习题(四)Pandas初体验,头歌参考答案

数据采集习题参考答案&#xff0c;会持续更新&#xff0c;点个关注防丢失。 创作不易&#xff0c;一键三连给博主一个支持呗。 为了方便查找&#xff0c;已按照头歌重新排版&#xff0c;朋友们按照头歌所属门类查找实训哦&#xff0c;该篇为Pandas。 文章目录 实训一&#…

职称计算机考试word2003真题,职称计算机考试《Word2003》历年真题回顾(1)

11、在Word2000编辑状态打开了一个文档&#xff0c;对文档没有作任何修改&#xff0c;随后执行“文件”菜单中的“退出”命令&#xff0c;则错误的叙述有( A C D )A、仅文档窗口被关 B、文档和Word2000主窗口全被关闭C、仅Word2000主窗口全被关闭 D、文档和Word2000主窗口全未被…

Spring Boot 动态修改定时任务cron参数

动态修改定时任务cron参数 不需要重启应用就可以动态的改变Cron表达式的值不能使用Scheduled(cron "${jobs.cron}")实现动态定时任务类DynamicScheduledTask package com.jege.spring.boot.task;import java.text.SimpleDateFormat; import java.util.Date;import …

全国计算机准考证打印2015年,甘肃2015下半年全国计算机等级考试准考证打印时间...

甘肃2015下半年全国计算机等级考试准考证打印时间一、打印准考证考生可在考前2周之内登陆全省统一报名网站自主打印准考证&#xff0c;或到考点现场领取准考证。二、考试时间下半年&#xff1a;2015年9月19日至21日&#xff0c;分批进行。考试具体时间、地点均以“准考证”为准…

TOPSIS与模糊Borda 的组合应用(以第二届大湾区杯和国赛为案例)

目录 一、TOPSIS&#xff08;优劣解距离法&#xff09;简介 二、TOPSIS&#xff08;优劣解距离法&#xff09;主要步骤 &#xff08;1&#xff09;数据进行标准化 &#xff08;2&#xff09;构建决策矩阵 &#xff08;3&#xff09;构造加权规范阵 &#xff08;4&#xf…

Spring Boot 页面国际化

internationalization详解 国际化&#xff08;internationalization&#xff09;是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言&#xff0c;国家/地区和文化相关的元素。换言之&#xff0c;应用程序的功能和代码设计考虑在不同地区运行的…

唯美计算机语言,唯美精辟的语句

1、当泪水一滴滴的掉落在我的手上&#xff0c;那时竟想为何我非你不可&#xff01;2、原来再美好的承诺&#xff0c;最终还是会被现实打败。3、明明不是陌生人&#xff0c;却装的&#xff0c;比陌生人&#xff0c;还要陌生。4、如果我是个瘦子&#xff0c;伤心时我还可以数数排…