python正则表达式

Django

…衆ロ難τιáo~ 提交于 2019-12-04 08:07:05
一、Django 简介   Django 是一个由 Python 写成的开放源代码的 Web 应用框架。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是 CMS(内容管理系统)软件。并于2005年7月在 BSD 许可证下发布。这套框架是以比利时的吉普赛爵士吉他手 Django Reinhardt 来命名的。由于 Django 的是在一个快节奏的新闻编辑室环境下开发的,它的目的是使常见的 Web 开发任务,快速和容易。 MTV 模式 Django 采用了 MTV 设计模式 上述图大概是说: URL ( urls.py )请求调度,当有缓存页面的时候直接返回内容。 视图函数( view.py )执行所请求的操作,通常包括读写数据库。 模型( models.py )定义了 Python 中的数据并与之交互。通常包含在一个关系数据库( MySQL、PostgreSQL SQLite 等),其他数据存储是可能的( XML、文本文件、LDAP、等)。 请求执行任务后,视图返回一个 HTTP 响应对象(通常是经过数据处理的一个模板)。可选的:视图可以保存一个版本的 HTTP 响应对象,返回携带一个时间戳,来告诉浏览器这个视图的更新时间。 模板通常返回 HTML 页面。Django 模板语言提供了 HTML 的语法及逻辑。 安装 pip 安装 pip install

python正则表达式函数match()和search()的区别详解

大兔子大兔子 提交于 2019-12-02 05:46:19
match()和search()都是python中的正则匹配函数,那这两个函数有何区别呢? match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配 , 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none 例如: 结果是:pythontab 而: 结果是:not match search()会扫描整个字符串并返回第一个成功的匹配 例如: 结果是:pythontab 那这样呢: 结果是:pythontab 来源: https://www.cnblogs.com/programmer123/p/11732636.html

Python正则表达式练习

半腔热情 提交于 2019-12-02 05:35:43
# -*- coding:utf-8 -*- # 正则表达式 import re # 使用match方法进行操作,匹配从头到尾的数据 # re.match(正则表达式,需要处理的字符串) a = re.match("hello", "hello world") # 检查第二个参数中是否存在第一个参数中的需求,也就是说检查第二个参数是否存在hello这个数据 print(a) # 当满足你的需求时,这里就会有返回值,如果没有返回值,就说明不满足需求 a = re.match(r"hello", "Hello world") # 因为python区分大小写,所以再第二个参数没有匹配到hello print(a) # 返回none # 使用[]匹配单个字符 # 为解决上面的问题,当你不知道大小写的时候,可以在表达式中,用[]括号将可能出现的大小写括起来 a = re.match(r"[Hh]ello", "Hello world") # 这样编写的话,不管hello还是Hello,都可以匹配到 print(a) # 还可以这样,匹配h和e可能是以大小写存在在字符串中 a = re.match(r"[Hh][Ee]llo", "HEllo world") print(a) # 使用group方法提取匹配到的数据 aa = a.group() # 如果上面match方法有匹配到数据的话

python 常见模块

▼魔方 西西 提交于 2019-12-02 02:50:58
Python sys模块用法详解 sys 是一个和 Python 解释器关系密切的标准库,它和帮助我们访问和 Python 解释器联系紧密的变量和函数 表 1 sys模块常用成员及功能 sys成员(变量和函数) 功能描述 sys.argv 获取运行 Python 程序的命令行参数。其中 sys.argv[0] 通常就是指该 Python 程序,sys.argv[1] 代表为 Python 程序提供的第一个参数,sys.argv[2] 代表为 Python 程序提供的第二个参数……依此类推。 sys.path 是一个字符串列表,其中每个字符串都是一个目录名,在使用 import 语句导入模块时,解释器就会从这些目录中查找指定的模块。 sys.exit() 通过引发 SystemExit 异常来退出程序。将其放在 try 块中不能阻止 finally 块的执行。你可以提供一个整数作为参数(默认为 0 ,标识成功),用来标识程序是否成功运行,这是 UNIX 的一个惯例。 sys.modules 返回模块名和载入模块对应关系的字典。 sys.platform 此变量是一个字符串,标识解释器当前正在运行的平台名称,它可能是标识操作系统的名称,也可能是标识其他种类的平台,如果运行 Jython 的话,就是 Java 虚拟机。 sys.stdin、sys.stdout、sys.stderr

正则

自古美人都是妖i 提交于 2019-12-01 09:54:44
一个模块的测试需求大体可以分为四大块: UI需求 、 功能需求 、 用户场景需求 、 性能与稳定性需求 UI需求 指的是,页面操作需求,不涉及到具体的业务, 仅仅是页面操作的功能 。这里面其实就包含有一些通用的隐性UI需求。 最好的产品是不管是多么小白的用户,拿到产品后能不使用用户手册或不需要旁人的指导下就能上手使用。UI要能指导用户如何去使用或用户能根据返回的提示完成他想要完成的操作。 页面是用户使用感受最直观的体现,一个功能的UI做得好不好,用起来提示容不容易理解,是体现一个产品好不好用的一个关键。基本上每个产品线每个功能模块多多少少都会涉及到UI的改动,交互的设计。 UI需求大体可以从UI限制和UI显示这两大块来考虑 : UI限制指的是页面上都有哪些限制,如输入框的限制,容量的限制,格式的限制; UI显示指的是特定条件下UI的展示效果。 功能需求 指的是,我们 做一个什么功能,要实现什么样的效果 。一般每个功能模块都会有需求文档(或需求矩阵)。若比较规范的产品线会对每个功能模块有一个比较详细的需求规格说明书,需求规格说明书里会明确规定这个功能模块需要实现什么功能,解决什么场景下的什么问题。 举个升级的例子:如升级需求:支持在线升级,支持离线导入升级。 在线升级可以根据升级的流程进行细分:下载升级包、升级过程这两个大过程, 下载升级包又可以细分:从哪里下载,怎么下载(下载的方式

Django-URL路由系统

我的梦境 提交于 2019-11-30 13:19:27
目录 1.URL配置 1.1基本格式   1.2参数说明  2.正则表达式详解 2.1基本配置 2.2注意事项 2.3补充说明 3.分组命名匹配 3.1URLconf 使用命名组: 3.2URLconf匹配的位置 3.3捕获的参数永远都是字符串 3.4视图函数中指定默认值 3.5include其他的URLconfs(也叫URL分发) 4.传递额外的参数给视图函数(了解) 5.命名URL(别名)和URL的反向解析 6.命名空间模式 1.URL配置 Django 1.11版本 URLConf官方文档    URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。 1.1基本格式   from django.conf.urls import url #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数传一个参数request,和wsgiref的environ类似,就是请求信息的所有内容 urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 注意: Django 2.0版本中的路由系统已经替换成下面的写法,但是django2

url配置

守給你的承諾、 提交于 2019-11-30 12:29:26
目录 一 URL配置   基本格式     参数说明  二 正则表达式详解   基本配置   注意事项   补充说明 三 分组命名匹配   URLconf匹配的位置   捕获的参数永远都是字符串   视图函数中指定默认值   include其他的URLconfs(也叫URL分发)   传递额外的参数给视图函数 四 命名URL(别名)和URL的反向解析 五 命名空间模式 一 URL配置    Django 1.11版本 URLConf官方文档   URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。   基本格式   from django.conf.urls import url #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数传一个参数request,和wsgiref的environ类似,就是请求信息的所有内容 urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ]   注意:   Django 2.0版本中的路由系统已经替换成下面的写法,但是django2.0是向下兼容1.x版本的语法的( 官方文档 ): from

Django基础之URL路由系统

耗尽温柔 提交于 2019-11-30 12:26:36
一 URL配置    Django 1.11版本 URLConf官方文档   URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。 基本格式   from django.conf.urls import url #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数传一个参数request,和wsgiref的environ类似,就是请求信息的所有内容 urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 注意:   Django 2.0版本中的路由系统已经替换成下面的写法,但是django2.0是向下兼容1.x版本的语法的( 官方文档 ): from django.urls import path urlpatterns = [ path('articles/2003/', views.special_case_2003), path('articles/<int:year>/', views.year_archive), path('articles/<int:year>/<int:month>/', views.month

Django基础二之URL路由系统

北城余情 提交于 2019-11-30 10:29:30
一 URL配置   Django 1.11版本 URLConf官方文档   URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。   基本格式   from django.conf.urls import url #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数传一个参数request,和wsgiref的environ类似,就是请求信息的所有内容 urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ]   注意:   Django 2.0版本中的路由系统已经替换成下面的写法,但是django2.0是向下兼容1.x版本的语法的( 官方文档 ): from django.urls import path urlpatterns = [ path('articles/2003/', views.special_case_2003), path('articles/<int:year>/', views.year_archive), path('articles/<int:year>/<int:month>/', views

Python爬虫1:博客访问量

对着背影说爱祢 提交于 2019-11-29 13:30:31
前言 Python中能够爬虫的包还有很多,但requests号称是“让HTTP服务人类”...口气不小,但的确也很好用。 本文是博客里爬虫的第一篇,实现一个很简单的功能:获取自己博客主页里的访问量。 当然了,爬虫一般肯定逃不掉要用正则表达式(regular expression),因此Python的re包也是十分常用的。 分析 打开博客园网站并登录,点击左边“我的随笔”: 点击F12可以查看网页源代码: 然后发现每一篇的阅读量表现为“阅读:”+数字,注意这里的冒号是英文,数字的位数不确定。 正则表达式中,数字用'\d'描述即可, 出现0-n次用'*',出现0-n次用'+',出现0-1次用'?', 在这里,“阅读:”后面必定有数字,因此用'*'或'+'皆可以。 代码 import requests import re url = 'https://cnblogs.com/maoerbao/p/' #我所有随笔集合的网址 f = requests.get(url).text #获取html页面内容,并转换成文本 a = re.findall('阅读:\d*',f) #正则表达式,提取每篇的阅读量 zydl = 0 L = [] for i in a: ydl = int(i[3:]) zydl = ydl + zydl L.append(ydl) print('阿尔伯塔的博客:\n')