标签:ack 开始 res back imp 必须 eve 帮助 python解释器
常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。
但其实import加载的模块分为四个通用类别:
如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script。
随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用
若想要使用一个模块,应该在程序开始的地方导入该模块,用 import 模块名
永远不要起一个py文件的名字,这个名字和你已知的模块同名
re模块中用到的几种方法
ret = re.findall(‘\d+‘,‘sjkhk172按实际花费928‘) #正则表达式匹配 多位数字,对象是后面的字符串 print(ret) >>> [‘172‘, ‘928‘]
ret = re.findall(‘\d‘,‘sjkhk172按实际花费928‘) # 正则表达式匹配数字
print(ret) >>> [‘1‘, ‘7‘, ‘2‘, ‘9‘, ‘2‘, ‘8‘]
ret = re.search(‘\d+‘,‘sjkhk172按实际花费928‘) print(ret) >>><re.Match object; span=(5, 8), match=‘172‘># 内存地址,这是一个正则匹配的结果 print(ret.group()) >>> 172# 通过ret.group()获取真正的结果 ret = re.search(‘\d‘,‘owghabDJLBNdgv‘) print(ret) print(ret.group()) #正则没有匹配到,所以会报错 ret = re.search(‘\d+‘,‘sjkhk3256按实际花费928‘) if ret : # 内存地址,这是一个正则匹配的结果 print(ret.group()) >>> 3256 # 通过ret.group()获取真正的结果
ret = re.match(‘\d+‘,‘132sjkhk按156实际花费928‘) print(ret.group()) >>> 132
s = ‘alex83taibai40egon25‘ ret = re.split(‘\d+‘,s) print(ret) >>> [‘alex‘, ‘taibai‘, ‘egon‘, ‘‘] # 以数字切割,切割对象后面默认有一个字符
ret = re.sub(‘\d+‘,‘H‘,‘alex83taibai40egon25‘) # 默认全部替换 print(ret) >>> alexHtaibaiHegonH ret = re.sub(‘\d+‘,‘H‘,‘alex83taibai40egon25‘,1) #替换一次 print(ret) >>> alexHtaibai40egon25
ret = re.subn(‘\d+‘,‘H‘,‘alex83taibai40egon25‘) print(ret) >>> (‘alexHtaibaiHegonH‘, 3)
ret = re.compile(‘\d+‘) # 已经完成编译了 print(ret) >>> re.compile(‘\\d+‘) #编译成原型 res = ret.findall(‘alex83taibai40egon25‘) # 拿来直接用 print(res) >>> [‘83‘, ‘40‘, ‘25‘] res = ret.search(‘sjkhk172按实际花费928‘) #可以多次使用,不用再次编译 print(res.group()) >>> 172
ret = re.finditer(‘\d+‘,‘alex83taibai40egon25‘) print(ret) >>><callable_iterator object at 0x000001FE0DEE11D0> #调用/得到迭代器 for i in ret: print(i.group()) >>> 83 40 25
#正常使用的正则表达式 s = ‘<a>wahaha</a>‘ # 标签语言 html 网页 ret = re.search(‘(<\w+>)(\w+)(</\w+>)‘,s) print(ret.group()) >>> <a>wahaha</a> # 所有的结果 print(ret.group(1)) >>> <a># 数字参数代表的是取对应分组中的内容 第一个分组中的 print(ret.group(2)) >>> wahaha # 第二个分组中内容 print(ret.group(3)) >>> </a>
s = ‘<a>wahaha</a>‘ ret = re.findall(‘(\w+)‘,s) print(ret) >>> [‘a‘, ‘wahaha‘, ‘a‘] ret = re.findall(‘>(\w+)<‘,s) #优先寻找匹配括号中的内容 print(ret) >>> [‘wahaha‘]
ret = re.findall(‘\d+(\.\d+)‘,‘1.234*4‘) print(ret) >>> [‘.234‘] ret = re.findall(‘\d+(?:\.\d+)‘,‘1.234*4‘) #取消了分组优先 print(ret) >>> [‘1.234‘]
s = ‘<a>wahaha</a>‘ pattern = ‘<(?P<tab>\w+)>(\w+)</(?P=tab)>‘ ret = re.search(pattern,s) print(ret.group()) >>> <a>wahaha</a> #与 正则表达式(<\w+>)(\w+)(</\w+>)效果是一样的 #如果正则表达式中有一模一样的表达式 就可以命名这个表达式,后面就可以直接套用名字
#若我们现在想在一个字符串中取出所有的整数,我们是不是这么写 ret=re.findall(r"\d+","1-2*(60+(-40.35/5)-(-4*3))") #我们打印看看 print(ret) >>> [‘1‘, ‘2‘, ‘60‘, ‘40‘, ‘35‘, ‘5‘, ‘4‘, ‘3‘] #结果将其中小数分开也匹配上了,跟我们的需求不一样,因为我们是要取整数的,所以,我们要这么写. 原因:你要匹配的内容太没有特点了 容易和你不想匹配的内容混在一起 ret = re.findall(r"\d+\.\d+|\d+","1-2*(60+(-40.35/5)-(-4*3))")#将小数和整数都匹配出来 print(ret) >>> [‘1‘, ‘2‘, ‘60‘, ‘40.35‘, ‘5‘, ‘4‘, ‘3‘] ret = re.findall(r"\d+\.\d+|(\d+)","1-2*(60+(-40.35/5)-(-4*3))") print(ret) >>> [‘1‘, ‘2‘, ‘60‘, ‘‘, ‘5‘, ‘4‘, ‘3‘] ret.remove(‘‘) print(ret) >>> [‘1‘, ‘2‘, ‘60‘, ‘5‘, ‘4‘, ‘3‘]
标签:ack 开始 res back imp 必须 eve 帮助 python解释器
原文地址:https://www.cnblogs.com/--kai/p/9495190.html