2018.10.19学习总结

Posted jutao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"231",text))


# 当要匹配的内容包含时
text = "ap"
"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 可以与这个子进程进行数据交换

 

























































































以上是关于2018.10.19学习总结的主要内容,如果未能解决你的问题,请参考以下文章

Python学习总结

2018年秋季学期《c语言程序设计》学习总结

学习总结SQL学习总结之认识SQL

9/22-9/28 java学习总结(课堂及课后学习总结) &实验总结3

10/13-10/19 java学习总结(没有课堂的课后学习总结) &实验总结6

JavaScript学习总结——转