演示正则中的替换和切割操作:在这之前我们先学习一个分组的概念: 分组:在正则中定义(...)就可以进行分组,理解为得到了一个子组好处:1).如果正则中的逻辑比较复杂,使用分组就可以优化代码的阅读性(更有层级感)2).一旦进行了分组,在正则表达式的后半部分内容中很有可能需要引用子组中的内容: 一旦引用了组,那么这两部分的内容(值)就可以保持一致了 import re phone=' regex=r'd{4}(d)r{3}' #r'...()...()...()..' print(re.match(…
替换:sub(regex,repl,string,count,[flags=0]): 替换数据,返回字符串(已经被替换完成后的内容)subn(regex,repl,string,count,[flags=0]): 替换数据,返回元祖对象,此元祖有两个元素 第一个元素记录了替换以后的字符串内容, 第二个元素记录了被替换的次数(count的值)参数:regex:正则规则(字符串)repl:需要被替换成的内容(new)string:需要被替换的内容(原串)count:需要被替换的个数,默认全部替换 i…
切割:split(regex,string):返回一个列表对象 import re str1='i love shenzhen so much' regex=r' +?' lt=re.split(regex,str1) print(lt) str2='dsafsa2341241dfakdsf34242dsafasfd______3214123fdsafas2131dsafas' regex=r'd+' lt=re.split(regex,str2) print(lt) ''' 补充案例:和替换有…
函数:match(regex,string,[flags=0])参数:regex:就是正则表达式(定义了一套验证规则)string:需要被验证的字符串数据flags:模式/标志位,默认情况下(不定义) --> 不开启任何的模式功能:从头开始尝试匹配字符串数据(注意:如果开头就不匹配直接返回None值),如果匹配成功,那么就会返回一个match对象:如果匹配不成功,那么就会返回None值flags的取值:re.I:忽然大小写match对象有5个常用的函数:group():返回匹配成功的数据(原串中…
演示正则表达式的拓展内容:函数:finditer(regex,string,[flags=0]):参数:和match.search.findall一样理解功能:将所有匹配的数据封装为一个一个的match对象,然后以iterator返回 import re str1 = 'i love shanghai shanghai shanghai so much' regex = 'shanghai' it = re.finditer(regex,str1) print(it,type(it)) '''…
4).函数:findall(regex,string,[flags=0]): 参数: 和match.search一样理解 功能: 将所有匹配成功的子数据(子串),以列表的形式返回: 如果一个都没有匹配成功,那么返回一个空列表 compile()配合search()使用: pat=re.compile(r'www') matchobj=pat.search('www.sina.com!!www.baidu.com.com!!www') print(matchobj) 函数:findall(rege…
函数:search(regex,string,[flags=0]):参数:和match一样理解功能:从头开始匹配字符串中的数据,如果头不匹配继续往后尝试匹配,直到有第一个匹配成功的子数据,立即返回一个match对象:此时就算后面还有匹配的子数据,直接无视...当然匹配不成功,返回None值[注意]:由于search调用完毕之后返回的仍然是一个match对象,所以还是可以调用5个常用的函数 import re print(re.match(r'www','hahawww.baidu.com!!ww…
2).compile(regex,[flags=0]):返回一个Pattern对象(认为:它内部已经封装了一套regex和flags) 可以再通过Pattern对象继续调用match函数(此时只需要传递一个参数:string即可) 注意: 以上函数中涉及的参数:regex.flags.string和re.match中的参数一样理解…
1.1 概述 UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接.简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据. 由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频.视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响. 但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完…
3.datetime模块:理解:datetime可以认为是time模块的补充/扩展datetime模块中有一些常用类:datetime类:记录了日期和时间数据信息date类:记录了日期数据信息time类:记录了时间数据信息 datetime类:now()和today():获取当前的日期和时间对象(返回值的类型为:datetime)utcnow():获取当前的日期和时间对象(utc时间,返回值的类型为:datetime) import datetime dt=datetime.datetime.n…
2.内存和硬盘: 内存:计算机硬件组成部分之一,它是一个容器,用来存储数据:处理数据速度快, 存储数据量小:断电死机数据会丢失,短暂性存储数据 硬盘:计算机硬件组成部分之一,它是一个容器,用来存储数据:处理数据速度慢, 存储数据量大,断电死机数据不会丢失,数据的持久存储 3.字节和字符 字节:计算机的存储数据的单位,底层唯一能够识别并且运算的数据 字符:人类将字节封装为另一种能直接识别的数据单位,底层还是字节 4.如何区分字节文件和字符文件 如果使用文本编辑器打开能看得懂(不会乱码)那它就是一个…
常用内置函数:round(): print(round(3.14),round(3.99)) print(round(3145.926,-2),round(413.575,2)) abs(): print(abs(-2),abs(-1),abs(0),abs(1),abs(2)) max().min().sum() print(max([1,2,3,4,5])) print(min([1,2,3,4,5])) print(sum([1,2,3,4,5])) 以下比较的是字符串中每个字符的asci…
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第四十八课:轨迹球 轨迹球实现的鼠标旋转 使用鼠标旋转物体,很简单也有很多实现方法,这里我们教会你模拟轨迹球来实现它.   轨迹球控制 By Terence J. Grant (tjgrant@tatewake.com) 如果只用鼠…
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第三十八课:资源文件 从资源文件中载入图像: 如何把图像数据保存到*.exe程序中,使用Windows的资源文件吧,它既简单又实用.   欢迎来到NeHe教程第38课.离上节课的写作已经有些时日了,加上写了一整天的code,也许笔头…
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第二十八课:贝塞尔曲面 贝塞尔曲面: 这是一课关于数学运算的,没有别的内容了.来,有信心就看看它吧. 贝塞尔曲面 作者: David Nikdel ( ogapo@ithink.net ) 这篇教程旨在介绍贝塞尔曲面,希望有比我更懂…
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第十八课:二次几何体 二次几何体: 利用二次几何体,你可以很容易的创建球,圆盘,圆柱和圆锥.   二次曲面是一种画复合对象的方法,这种方法通常并不需要很多的三角形.我们将要使用第七课的代码.我们将要增加7个变量以及修改纹理以增加一些…
自定义函数:实现文件复制操作有形参(2个) 没有返回值相似版(不用) def copyFile(src,dest): #1.打开两个文件:1个关联读操作,1个关联写操作 fr=open(src,'rb') fw=open(dest,'wb') #读和写操作 content=fr.read() fw.write(content) #关闭两个文件 fw.close() fr.close() def copyFile01(src,dest): #1.打开两个文件:1个关联读操作.1个关联写操作 fr=…
演示:读取中文字符 结论: 1).如果不设置encoding,默认使用gbk进行编解码 2).如果编码和解码不一致,最终导致报错,但是一旦设置了errors='ingore',那么就不会报错,而采取乱码现象显示 3).tell():返回的是文件描述符的字节位 4).对于读操作,必须保证路径中的文件一定是真实存在的,否则报错:FileNotFoundError #打开文件: f2=open(r'F:\PyCharm\多味红豆\python第二十九课——文件读写\a.txt','r',encodin…
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配.采取动态模糊的匹配,最大的应用是爬虫. re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对象拥有一系列方法用于正则表达式匹配和替换. re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数. 一.re.match函数 re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位…
1.面向对象:(思想) 面向:看.关注.瞅 对象:个体.实体.实例.结果单词:object在python中一些皆对象 面向过程:(思想) 面向:看.关注.瞅 过程:经过.经历.从头到尾 使用一些生活中的案例来对面向过程和面向对象进行区分比较: 案例一: 使用面向过程的思想解决吃饭的问题? 1.考虑今天吃什么? 2.去菜场买菜 3.挑菜(货比三家.针对性砍价) 4.结账走人 5.摘菜 6.洗菜 7.切菜 8.炒菜 9.焖饭 10.吃饭 11.洗刷 使用面向对象的思想解决吃饭的问题? 1.考虑今天吃…
演示函数的定义和使用细节: 默认参数:#在设计自定义函数的时候,就存在一个默认值,就算在调用的时候不显示的传入实参,也不会报错.#会用默认值来代替参与后期的运算 def m1(name='张三',age=23): print(name,age) m1('李四') m1('王五',18) 一般参数:定义函数的时候有几个参数,在调用函数的时候就需要显示的传递几个实参,而且要保证位置不能传错,否则会造成数据内容的不合理 def m2(name,age,sex): print(name,age,sex)…
4.calendar模块: 构造:calendar(year,[w=2,l=1,c=6]):返回year年的完整的日历信息对象 和闰年相关的函数如下: isleap(year):判断year是否是闰年 返回True,说明是闰年 返回False,说明不是闰年 leapdays(y1,y2):返回[y1,y2)之间的闰年个数 import calendar ''' 演示calendar(日历):模块的使用 ''' #构造:calendar(year,[w=2,l=1,c=6]):返回year年的完整…
myexception.py ''' 实现自定义异常类: ''' class MyException(Exception): def __init__(self,msg): super().__init__(msg) 封装一个Person类.py from myexception import MyException class Person: def __init__(self,name,age): self.name=name self.__age=age def setAge(self,a…
5.类函数和对象函数 类函数:在定义函数的上面一行书写@classmethod,特点:没有self 有cls 对象函数:定义在class中的普通的def函数 演示类函数和对象函数的定义使用: 总结: 在对象函数中,既能够直接使用对象属性和对象函数,也能够使用类属性和类函数 定义类函数,需要在函数的上面追加@classmethod注解符号,这样它的参数位置就有一个cls关键字 表示类的意思,而原本我们看到的self就不再了 在类函数中,只能直接使用类属性和类函数,不能直接使用对象属性和对象函数:…
一.综合练习-文件清单列表 获取指定文件夹下,指定扩展名的文件(含子文件夹),并将这些文件的绝对路径写到一个文本文件里.也就是建立一个指定扩展名的文件列表 1.深度遍历 2.过滤器->容器 3.写入文件 import java.util.List; import java.io.*; import java.util.ArrayList; public class Main { public static void main(String[] args) throws IOException {…
templates 讲后台得到的数据渲染到页面上:话不多说,先看具体代码. urls: from django.conf.urls import url from django.contrib import admin from django.urls import path from a00 import views urlpatterns = [ path('admin/', admin.site.urls), url(r'show_time/',views.show_time ), url…
Django框架中的urls配置: 首先通过pycharm创建一个Django项目: 例如要写blog的功能:则在digango_lesson中的urls代码如下: """django_lesson URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/3.0/topics…
1.继承:字面意思 # 继承 : 字面意思 class father: pass class grandfather: pass class children(father): # 单继承 pass class children1(father, grandfather): # 多继承 pass 例子 class Dad: money = 10 def __init__(self, name): print('巴巴') self.name = name def hit_son(self): pr…
资源整理. 1 Coding: 1.支持TMS.WMTS标准瓦片下载,支持百度地图瓦片.高德地图瓦片.腾讯地图瓦片.天地图.ArcServer Rest瓦片.ArcServer本地缓存切片.geoserver WMS等瓦片下载.默认以png文件方式保存瓦片,也支持以sqlite(mbtiles格式)保存瓦片,支持瓦片base64编码后以sqlite保存(用于android端离线地图). MapTileGenerator 2.这个仓库托管现代 JavaScript 教程的内容,中文版. javas…
前面笨笨已经给大家展示了CChart编程的N个例子.这些例子中,我们的CChart图像都是绘制在程序的主窗口中的. 在很多情况下,我们面对的情形不是这样的.这节课笨笨就给大家介绍一下怎样在对话框中用CChart画图. 这里要说明一点,本节课的内容需要CChart的版本号不小于2.5.1.4,否则运行会不正常.请到CSDN网站笨笨的下载频道下载. 第一步,打开VC,建立一个基于MFC AppWizard(exe)向导的项目Lesson18.向导中选择Dialog Based,其它不做任何更改,直接…