2018.10.19学习总结

1正则表达式
import re
# [] 范围匹配 中间 用-来连接
# re.findall("[a-zA-Z0-9]","a ab abc abcd a123c")
# 如果要匹配 符号- 要写表达式的左边或右边
# print(re.findall("[-ab]","a ab abc abcd a123c a--"))

# 重复匹配 表达式的匹配次数
# * 表示 任意次数 所以0次也满足
print(re.findall("[a-zA-Z]*","a ab abc abcdssdsjad a123c"))
# [a-zA-Z]*
# + 一次或多次
print(re.findall("[a-zA-Z]+","a ab abc abcdssdsjad a123c"))
# [a-zA-Z]+
# ? 0次或1次
print(re.findall("[a-zA-Z]?","a ab abc abcdssdsjad a123c"))

# {1,2} 自定义匹配次数 {1,} 1到无穷 {,1} 0到1次
print(re.findall("[a-zA-Z]{1,2}","a ab abc abcdsdssjad a123c"))

# + * 贪婪匹配 表达式匹配的情况下 尽可能的多拿 (一直匹配 直到不满足为止)

# print(re.findall("\w*","jjsahdjshdjssadsa dssddsads"))
# print(re.findall("\w+","jjsahdjshdjssadsa dssddsads"))
# 非贪婪匹配 在表达式的后面加上?
# print(re.findall("\w?","jjsahdjshdjssadsa dssddsads")) # 非贪婪匹配
#

text = """<img src="https://ss1.baidu.com/[email protected]#4$QIZ8tyhnq/it/u=2972240716,3143951157&amp;fm=55&amp;app=22&amp;f=JPEG?w=121&amp;h=81&amp;s=0FB86D855C624C9C0AB1F57203008031" class="c-img c-img6">"""

# 演示贪婪匹配
print(re.findall(‘src="(http.*?)"‘,text))

# 非贪婪匹配 在表达式的后面加上?
print(re.findall(‘src="http.*"‘,text))

# print(re.findall("[a-zA-Z]*","a|ab|abc|abcd|a123c"))

# 分组 加上分组 不会改变原来的规则 仅仅是将括号中的内容单独拿出来了
print(re.findall("([a-zA-Z]+)_dsb","aigen_dsb cxx_dsb alex_dsb zxx_xsb _dsb"))

# re模块中常用的函数
# match 从字符串开始处匹配 只找一个
print(re.match("\w*","abc").group(0)) # 获取匹配成功的内容
# group 用来获取某个分组的内容 默认获取第0组 就是整个表达式本身
print(re.match("([a-zA-Z]+)(_dsb)","aigen_dsb cxx_dsb alex_dsb zxx_xsb _dsb").group(2))
print(re.match("\w*","abc").span()) # 获取匹配成功的内容的索引

print(re.search("\w*","abc").group())
# 从全文范围取一个
print(re.search("([a-zA-Z]+)(_dsb)","xxx aigen_dsb cxx_dsb alex_dsb zxx_xsb _dsb"))
# 从开始的位置开始匹配
# print(re.match("([a-zA-Z]+)(_dsb)","xxx aigen_dsb cxx_dsb alex_dsb zxx_xsb _dsb").group())
# 将正则表达式 编译成一个对象 往后可以不用在写表达式 直接开始匹配
# print(re.compile("\w*").findall("abcd"))

# print(re.split("\|_*\|","python|____|js|____|java"))

# 替换
print(re.sub("python","PYTHON","js|python|java"))
# 用正则表达式来交换位置
text = "java|C++|js|C|python"
# text1 = "java|C++|js|C|python"
# 将整个内容分为三块 java |C++xxxxxx| python
partten = "(.+?)(\|.+\|)(.+)"
".+?ahgshags"
# ?:用于取消分组 就和没写括号一样
# partten = "(?:.+?)(\|.+\|)(.+)"
# print(re.search(partten,text).group(0))
print(re.sub(partten,r"\2\3\1",text))

# 当要匹配的内容包含\时
text = "a\p"
"\p"

print(text)
print(re.findall(r"a\\p",text))

# qq密码 长度6--16 数字字母特殊 不包含^
# 如果包含^ 不匹配任何内容
# 除了^ 别的都能匹配上

"[^\^]{6,16}"

import re
# print(re.search("[^^]{6,16}","1234567^as^"))
# print(re.search("[^[\^]+.{6,16}","1234567as"))

# print(re.match("[^@]{6,16}","[email protected]"))
#
# print(re.match("[a-z]{6,16}","abasadsasasa^"))
# 长度必须为6 不能包含@
print(re.match("^[^^]{6,8}$","1111111^56781111"))

# print(re.match("[0-9]{6,7}","1234567"))
# print(re.match("^\"[^@]{6,16}\"$", ‘"1234567io1u"‘))

# ^$ 整体匹配 将字符串内容看作一个整体 而不是像之前的逐个匹配
print(re.match("^[^^]{3,6}$","1234567"))

#

# 手机号码验证 长度11 以1开头 全都是数字
print(re.match("^1(89|80|32)\d{8}$","18921999093"))

# 邮箱地址验证 字母数字下划线(至少6个)@字母数字下划线(最少一个).(cn com org edu任意一个) 可以有[email protected]
partten = "^\w{6,}@\w+\.(cn|com|org|edu)$"
# 只接受 qq sina 163

print(re.match(partten,"18921999as [email protected]"))

# 身份证号码 要么18 要么15位数字 最后一个可能是X
# partten = "^\d{17}(X|\d)$"
partten2 = "(^\d{15}$)|(^\d{17}(X|\d)$)"
print(re.match(partten2,"123321200010100"))

2import subprocess
# 就用来执行系统命令
import os

cmd = r‘dir D:\上海python全栈4期\day23 | findstr "py"‘
# res = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
# # 从管道中读取数据 管道就是 两个进程通讯的媒介
# # print(type(res.stdout.read().decode("GBK")))
# print(res.stdout.read().decode("GBK"))
# print(res.stderr.read().decode("GBK"))

dir = r‘dir D:\上海python全栈4期\day23‘
find = ‘findstr "py"‘
"""
stdout 输出管道
stdin 输入管道
stderr 错误管道
"""
res1 = subprocess.Popen(dir,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)

res2 = subprocess.Popen(find,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=res1.stdout)
# 从管道中读取数据 管道就是 两个进程通讯的媒介
# print(type(res.stdout.read().decode("GBK")))
# print(res1.stdout.read().decode("GBK"))
print(res2.stderr.read().decode("GBK"),"33333")

# 简单总结 subprocess 主要用于执行系统指令 (启动子进程) 与os.system的不同在于
# subprocess 可以与这个子进程进行数据交换

原文地址:https://www.cnblogs.com/jutao/p/9863516.html

时间: 2024-11-08 23:57:30

2018.10.19学习总结的相关文章

2018.10.16python学习第二十天

常用模块 random 模块 ? 随机数生成模块 ? random.random() 0-1 不包括1的随机浮点数 ? random.randint(1,10) 1-10 包括1和10的整数 ? random.randrange(1,10) 1-10 包括1,但是不包括10的整数 ? random.choice(list) list 从list中随机取出一个数 ? random.choices(list,k=个数) list 从list中随机取出k个数 ? random.sample(list,

2018.10.18学习总结

1""" hash lib hash是一种算法 是将一个任意长的数据 根据计算 得到一个固定长度特征码 特征: 不同输入 可能会有相同的结果 几率特别小 相同的输入 必然得到相同结果 由于散列(特征)的性质 从原理来看是不可能 反解 用来 验证 两个输入的数据是否一致 使用场景 1.密码验证 123321 jahsajshajhsjahjas client 加密后结果 server 拿到加密后 2.验证数据是否被篡改 比如游戏安装包 有没有被改过 为了防止别人撞库成功 可用提

2018.10.11python学习第十七天

模块 1.模块是什么? 模块:一组功能的集合 功能:在python中,一个功能就是一个函数:一个py文件就是一个模块 2.为什么要用模块? 借鉴思想:可以极大的提升开发效率 自定义模块:抽取我们自己程序中要用的功能,定义成模块,然后程序的各部分都去模块中调 用,可以较少代码冗余. 3.如何使用模块? 大前提:注意区分 执行文件 vs 被导入文件 模块类型的分类: 1.自定义模块(第三方模块也属于自定义模块) 2.内置模块 (c语言编写,连接到python解释器中,如time模块) 3.已经编译为

Python学习之路—2018/6/19

Python学习之路-2018/6/19 1.注册自定义转化器 converts.py class Birthday: regex = '[0-9]{8}' # 匹配规则 def to_python(self, value): # 匹配的字符串返回具体的变量值,传递到对应的视图函数中 return int(value) def to_url(self,value): # 反向解析 return "%04d" % value urls.py from django.urls import

Scrum会议10.19

Scrum会议 组名称:好好学习 项目名称:记账本 参会成员:林莉(Master)胡丽娜 宫丽君 汪东涵 时间:2016.10.19 已完成内容: 1.完成新项目的查找,查找学姐的代码和项目. 2.理解学习代码和项目. 计划完成: 1.胡丽娜:记录会议内容,写随笔更新博客. 2.林莉:新项目的查找. 3.汪东涵:项目代码和功能的理解. 4.张金生:学习功能. 燃尽图:

实习期间的一些思考整理(6)2018.4.19~4.20

青云诀游戏体验日报-2018.4.19 今日关键点:新老玩家的矛盾 今天试着分析青云诀新老玩家之间矛盾的原因. 1.    利益问题 游戏刚出来时,都希望玩的人多点,所以都会欢迎新人:当游戏到了后期,人数多起来,资源的获取就越发艰难(比如竞技场排行奖励.抢BOSS等),这时候就会发生利益冲突,新老玩家的矛盾就出来了. 2.    追赶机制问题 随着游戏版本的更替,新手要想追上老手的脚步是越来越难的:而对于那些土豪新手,花钱就是为了迅速追平与老手的差距(或者说追上新版本的进度).针对这些问题,游戏

20175312 2018-2019-2 《Java程序设计》第10周学习总结

20175312 2018-2019-2 <Java程序设计>第10周学习总结 教材学习内容总结 已依照蓝墨云班课的要求完成了第十二章的学习,主要的学习渠道是PPT,和书的课后习题. 总结如下: 1.第十二章的主要内容: Java中的线程 Thread类与线程的创建 线程的常用方法 线程同步 协调同步的线程 线程联合 GUI线程 计时器线程 2.除了课本内容,还学习了有关--数据库MySQL(课下作业,必做)的内容 3.课本代码已经上传至码云,链接如下: https://gitee.com/d

20175310 《Java程序设计》第10周学习总结

20175310 <Java程序设计>第10周学习总结 本周博客: 2018-2019-2 20175310 实验三<敏捷开发与XP实践>实验报告 教材学习内容总结 这周学习了第十二章的内容,主要的知识点如下: 进程与线程 进程与线程的关系: 进程是程序的一次动态执行进程,它对应了从代码加载.执行至执行完毕的一个完整过程 线程不是进程,一个进程在其执行过程中,会产生多个线程,线程间可以共享进程中的代码和数据. 没有进程就没有线程 Java中的线程 多线程: 多线程是指一个应用程序中

【谜客帝国】第139届微雨潇潇联想专场(2018.10.15)

[谜客帝国]第139届微雨潇潇联想专场(2018.10.15) 主持:瓷   计分:小白 1.本季重逢在帝国  只身东海挟春雷 乐天曲江之感怀 一段新愁染眉弯 5 今秋复来此 2.寒蛩轻唱送微凉  萧萧梧叶诉离情 白帝有语怜高洁 夜夜龙泉壁上鸣 4 此秋声也 3.人至中年心淡然  我言此季胜春潮 春愁夏恨冬烦忧 吟风作赋只伤春 4 不是悲秋 4.菊残犹有傲霜枝  立冬尚见黄叶飞 子夜歌里玉关情 竞雄洒血化碧涛 5 秋风吹不尽 5.轻寒最是可人天  貂裘换酒也堪豪 姑苏城外寒山寺 斋中结社咏海棠