1.re.match()

re.match()的概念是从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None。

包含的参数如下:

pattern: 正则模型

string : 要匹配的字符串

falgs : 匹配模式

match() 方法一旦匹配成功,就是一个match object对象,而match object对象有以下方法:

group() 返回被 RE 匹配的字符串

start() 返回匹配开始的位置

end() 返回匹配结束的位置

span()返回一个元组包含匹配 (开始,结束) 的位置

案例:

import re

# re.match 返回一个Match Object 对象

# 对象提供了 group() 方法,来获取匹配的结果

result = re.match("hello","hello,world")

if result:

print(result.group())

else:

print("匹配失败!")

输出结果:

hello

2.re.search()

re.search()函数会在字符串内查找模式匹配,只要找到第一个匹配然后返回,如果字符串没有匹配,则返回None。

格式:re.search(pattern, string, flags=0)

要求:匹配出文章阅读的次数

import re

ret = re.search(r"\d+", "阅读次数为 9999")

print(ret.group())

输出结果:

9999

3.match()和search()的区别:

match()函数只检测RE是不是在string的开始位置匹配,

search()会扫描整个string查找匹配

match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none

举例说明:

import re

print(re.match('super', 'superstition').span())

(0, 5)

print(re.match('super','insuperable'))

None

print(re.search('super','superstition').span())

(0, 5)

print(re.search('super','insuperable').span())

(2, 7)

补充知识:jupyter notebook_主函数文件如何调用类文件

使用jupyter notebook编写python程序,rw_visual.jpynb是写的主函数,random_walk.jpynb是类(如图)。在主函数中将类实例化后运行会报错,经网络查找解决了问题,缺少Ipynb_importer.py这样一个链接文件。

解决方法:

1、在同一路径下创建名为Ipynb_importer.py的文件:File-->download as-->Python(.py),该文件内容如下:

#!/usr/bin/env python

# coding: utf-8

# In[ ]:

import io, os,sys,types

from IPython import get_ipython

from nbformat import read

from IPython.core.interactiveshell import InteractiveShell

class NotebookFinder(object):

"""Module finder that locates Jupyter Notebooks"""

def __init__(self):

self.loaders = {}

def find_module(self, fullname, path=None):

nb_path = find_notebook(fullname, path)

if not nb_path:

return

key = path

if path:

# lists aren't hashable

key = os.path.sep.join(path)

if key not in self.loaders:

self.loaders[key] = NotebookLoader(path)

return self.loaders[key]

def find_notebook(fullname, path=None):

"""find a notebook, given its fully qualified name and an optional path

This turns "foo.bar" into "foo/bar.ipynb"

and tries turning "Foo_Bar" into "Foo Bar" if Foo_Bar

does not exist.

"""

name = fullname.rsplit('.', 1)[-1]

if not path:

path = ['']

for d in path:

nb_path = os.path.join(d, name + ".ipynb")

if os.path.isfile(nb_path):

return nb_path

# let import Notebook_Name find "Notebook Name.ipynb"

nb_path = nb_path.replace("_", " ")

if os.path.isfile(nb_path):

return nb_path

class NotebookLoader(object):

"""Module Loader for Jupyter Notebooks"""

def __init__(self, path=None):

self.shell = InteractiveShell.instance()

self.path = path

def load_module(self, fullname):

"""import a notebook as a module"""

path = find_notebook(fullname, self.path)

print ("importing Jupyter notebook from %s" % path)

# load the notebook object

with io.open(path, 'r', encoding='utf-8') as f:

nb = read(f, 4)

# create the module and add it to sys.modules

# if name in sys.modules:

# return sys.modules[name]

mod = types.ModuleType(fullname)

mod.__file__ = path

mod.__loader__ = self

mod.__dict__['get_ipython'] = get_ipython

sys.modules[fullname] = mod

# extra work to ensure that magics that would affect the user_ns

# actually affect the notebook module's ns

save_user_ns = self.shell.user_ns

self.shell.user_ns = mod.__dict__

try:

for cell in nb.cells:

if cell.cell_type == 'code':

# transform the input to executable Python

code = self.shell.input_transformer_manager.transform_cell(cell.source)

# run the code in themodule

exec(code, mod.__dict__)

finally:

self.shell.user_ns = save_user_ns

return mod

sys.meta_path.append(NotebookFinder())

2、在主函数中import Ipynb_importer

import matplotlib.pyplot as plt

import Ipynb_importer

from random_walk import RandomWalk

rw = RandomWalk()

rw.fill_walk()

plt.scatter(rw.x_values, rw.y_values, s=15)

plt.show()

3、运行主函数,调用成功

ps:random_walk.jpynb文件内容如下:

from random import choice

class RandomWalk():

def __init__(self, num_points=5000):

self.num_points = num_points

self.x_values = [0]

self.y_values = [0]

def fill_walk(self):

while len(self.x_values) < self.num_points:

x_direction = choice([1,-1])

x_distance = choice([0,1,2,3,4])

x_step = x_direction * x_distance

y_direction = choice([1,-1])

y_distance = choice([0,1,2,3,4])

y_step = y_direction * y_distance

if x_step == 0 and y_step == 0:

continue

next_x = self.x_values[-1] + x_step

next_y = self.y_values[-1] + y_step

self.x_values.append(next_x)

self.y_values.append(next_y)

运行结果:

以上这篇浅谈Python中re.match()和re.search()的使用及区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持python博客。

python中match函数的用法_浅谈Python中re.match()和re.search()的使用及区别相关推荐

  1. python中for循环的用法_浅谈Python的for循环

    for循环在python中的重要性毋庸置疑,可是,我们真的把所有for循环的知识点都理解透了么?试试看以下内容: for 循环的基本格式 for iterable是可迭代对象,包括字符串,列表,元组, ...

  2. python中rstrip用法_浅谈Python3中strip()、lstrip()、rstrip()用法详解

    简单来说,三种方法是为了删除字符串中不同位置的指定字符.其中,strip()用于去除字符串的首尾字符,同理,lstrip()用于去除左边的字符,rstrip()用于去除右边的字符 Python中有三个 ...

  3. python中astype用法_浅谈python 中的 type(), dtype(), astype()的区别

    如下所示: 函数 说明 type() 返回数据结构类型(list.dict.numpy.ndarray 等) dtype() 返回数据元素的数据类型(int.float等) 备注:1)由于 list. ...

  4. python 读excel字符型 数值_浅谈python 读excel数值为浮点型的问题

    浅谈python 读excel数值为浮点型的问题 如下所示: #读入no data = xlrd.open_workbook("no.xlsx") #打开excel table = ...

  5. python老是报参数未定义_浅谈Python程序的错误:变量未定义

    Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...

  6. java中修饰常量的事_浅谈java中的声明常量为什么要用static修饰

    今天定义一个类常量,想着也只有这个类可以用到,就没用static关键字修饰.结果sonar代码检查提示: Rename this field "PERSON_TYPE_USER" ...

  7. python能解决什么数据问题_浅谈Python数据分析

    Python数据分析最常用的包是numpy和pandas 下面我们先从一维数据开始了解两个包的运用:一维数据Numpy>>Arrary Pandas>>Series 一维数据分 ...

  8. python中的date的含义_浅谈python中的dateime

    原文链接:http://www.cnblogs.com/lhj588/archive/2012/04/23/2466653.html Python提供了多个内置模块用于操作日期时间,像calendar ...

  9. python中异或怎么算_浅谈Python逻辑运算符 异或xor

    我又来水文章了 这篇讲讲令人百思不得骑姐的异或运算 让我们先来看两段,不,是10(b)段对话:技术员:这个水坝系统的设计思路为按下紧急按钮或者水位高于危险水位时,系统发出警报 提问者:这个" ...

  10. vue 中provide的用法_浅谈vue中provide和inject 用法

    一.概念解析 成对出现:provide和inject是成对出现的 作用:用于父组件向子孙组件传递数据 使用方法:provide在父组件中返回要传给下级的数据,inject在需要使用这个数据的子辈组件或 ...

最新文章

  1. java reflectionutils_ReflectionUtils工具类-装载
  2. 学python可以做什么产品-学完Python可以做什么?主要用途有哪些?
  3. ANDROID内核和驱动篇-ANDROID内核介绍(转)
  4. Windows Server 2008远程桌面端口更改方法
  5. Coprime Sequence 思维 gcd 删一个数
  6. 【CV】给AI一张高清照片,分分钟还你细节满满的3D人体模型,GitHub标星4.4k | 在线可玩...
  7. The requested URL was not found on the server
  8. 数学除了摧残祖国的花朵外,竟然还可以赢钱!
  9. 【五】每个球队胜率统计
  10. linux上ln命令详细说明
  11. (191)FPGA上电后IO的默认状态(Vivado软件默认为0)
  12. PyQt Graphics View 一个hello world例子
  13. 在Win32中管理虚拟内存——举例
  14. 基于软总线的实时组件调度技术研究
  15. 人生歪理,歪得很有道理
  16. STM32CubeMX和keil实现led灯的点亮
  17. 转发和重定向的区别(forward和redirect的区别)
  18. Neutron 理解 (6): 如何实现虚拟三层网络
  19. Aspose.PDF for Java系列5-转化PDF文档为Word
  20. 制作Linux Ubuntu18.04系统启动盘

热门文章

  1. JAVA短信验证码接口API
  2. 行业点评:有赞996事件,要感恩程序员的加班
  3. Python学习:IndentationError: expected an indented block
  4. 分享!微信群二维码突破100人限制和7天不过期的方法
  5. 旋律生成算法的现状与挑战
  6. 两个9014三极管简易开关电路分析
  7. list.stream().map().collect(Collectors.toList())
  8. Air720模块Linux USB驱动以及PPP拨号说明
  9. 高等数学——驻点,拐点,极值点
  10. 高版本SDK编译apk在低版本android源码中编译