标签:
进度条实例
import sys import time def view_bar(num, total): rate = float(num) / float(total) rate_num = int(rate * 100) r = ‘\r%d%%‘ % (rate_num, ) # \r从起始位置重新开始 sys.stdout.write(r) # 不换行输出 sys.stdout.flush() # 清空输出内容 if __name__ == ‘__main__‘: for i in range(0, 100): time.sleep(0.1) view_bar(i, 100)
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd os.curdir 返回当前目录: (‘.‘) os.pardir 获取当前目录的父目录字符串名:(‘..‘) os.makedirs(‘dir1/dir2‘) 可生成多层递归目录 os.removedirs(‘dirname1‘) 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir(‘dirname‘) 生成单级目录;相当于shell中mkdir dirname os.rmdir(‘dirname‘) 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname os.listdir(‘dirname‘) 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 os.remove() 删除一个文件 os.rename("oldname","new") 重命名文件/目录 os.stat(‘path/filename‘) 获取文件/目录信息 os.sep 操作系统特定的路径分隔符,win下为"\\",Linux下为"/" os.linesep 当前平台使用的行终止符,win下为"\t\n",Linux下为"\n" os.pathsep 用于分割文件路径的字符串 os.name 字符串指示当前使用平台。win->‘nt‘; Linux->‘posix‘ os.system("bash command") 运行shell命令,直接显示 os.environ 获取系统环境变量 os.path.abspath(path) 返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False os.path.isabs(path) 如果path是绝对路径,返回True os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
注:黄色选择为必知必会
用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
import hashlib # 执行md5时增加特定字符,在原有加密基础上再次加密,提交安全性,预防撞库 obj = hashlib.md5(bytes(‘abcde‘, encoding="utf-8")) # 获取加密结果 obj.update(bytes(‘123456‘, encoding=‘utf-8‘)) result = obj.hexdigest() print(result) # 输出结果 985ae3acc7684c692870900af17ab160
字符:
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
次数:
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
findall,获取非重复的匹配列表;如果有一个组则以列表形式返回,且每一个匹配均是字符串;如果模型中有多个组,则以列表形式返回,且每一个匹配均是元祖;空的匹配也会包含在结果中。
findall(pattern, string, flags=0)
1.普通字符
ret = re.findall(‘alex‘, ‘yuanaleSxalexwupeiqi‘) print("普通字符", ret)
2.元字符
. 任意一个字符
^ 起始位置匹配
$ 结束位置匹配
* 匹配前一个字符0到多次
+ 重复一次或多次
?重复零次或一次
{} 重复n次
[] 或 (^在[]为非)
练习:
ret = re.findall(‘al.x‘, ‘yuanaleSxalexwupeiqi‘) print(".", ret) ret = re.findall(‘^al.x‘, ‘alexyuanaleSxalexwupeiqi‘) print("^", ret) ret = re.findall(‘pei.i$‘, ‘yuanaleSxalexwupeiqi‘) print("$", ret) ret = re.findall(‘al.*x‘, ‘yuanaleSxalexwupeiqi‘) print("*", ret) ret = re.findall(‘al.+x‘, ‘yuanaleSxalexwupeiqi‘) print("+", ret) ret = re.findall(‘al.?x‘, ‘yuanaleSxalexwupeiqi‘) print("?", ret) ret = re.findall(‘al.{1,6}x‘, ‘yuanaleSxalexwupeiqi‘) print("{}", ret) ret = re.findall(‘a[a-z]+x‘, ‘yuanaleSxalexwupeiqi‘) print("[]:", ret) # 输出结果 . [‘alex‘] ^ [‘alex‘] $ [‘peiqi‘] * [‘aleSxalex‘] + [‘aleSxalex‘] ? [‘alex‘] {} [‘aleSxalex‘] []: [‘alex‘]
match,从起始位置开始匹配,匹配成功返回一个对象,示匹配成功返回None。
match(pattern, string, flags=0) # pattern: 正则模型 # string: 要匹配的字符串 # flags: 编译标志位,用于修改正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
练习:
ret = re.match(‘com‘, ‘comwww.runcomoob‘).group() print(ret) ret = re.match(‘com‘, ‘Comwww.runComoob‘, re.I).group() print(ret) # 输出结果 com Com
search,浏览整个字符串去匹配第一个,未匹配成功返回None
search(pattern, string, flags=0) group() 返回被re匹配的字符串 start() 返回匹配开始的位置 stop() 返回匹配结束的位置 span() 返回一个元组包含匹配(开始,结束)的位置
练习:
a = "123abc456" ret = re.search("([0-9]*)([a-z]*)([0-9]*)",a) print(ret.group(0)) print(ret.group(1)) print(ret.group(2)) print(ret.group(3)) # 输出结果 123abc456 123 abc 456
finditer,返回一个迭代器
finditer(pattern, string, flags=0)
sub,替换匹配成功的指定位置字符串
sub(pattern, repl, string, count=0, flags=0) # pattern: 正则模型 # repl : 要替换的字符串或可执行对象 # string : 要匹配的字符串 # count : 指定匹配个数 # flags : 匹配模式
练习:
ret = re.sub("g.t","have",‘I get A, I got B, I gut C‘) #全部更换 print(ret) ret1 = re.sub("g.t","have",‘I get A, I got B, I gut C‘,2) #只替换2次 print(ret1) # 输出结果 I have A, I have B, I have C I have A, I have B, I gut C
用法同re.sub,返回值时显示替换几次
ret = re.subn("g.t","have",‘I get A, I got B, I gut C‘) print(ret) ret1 = re.subn("g.t","have",‘I get A, I got B, I gut C‘,2) print(ret1) # 输出结果 (‘I have A, I have B, I have C‘, 3) (‘I have A, I have B, I gut C‘, 2)
split,根据正则匹配分割字符串
split(pattern, string, maxsplit=0, flags=0) # pattern: 正则模型 # string : 要匹配的字符串 # maxsplit:指定分割个数 # flags : 匹配模式
练习:
ret = re.split(‘\d+‘, ‘one1two2three3four4‘) print(ret) ret = re.split(‘\d+‘, ‘one1two2three3four‘) print(ret) # 输出结果 [‘one‘, ‘two‘, ‘three‘, ‘four‘, ‘‘] #最后为空,因为按数字分割,数字4后为空 [‘one‘, ‘two‘, ‘three‘, ‘four‘]
re.compile,用于将字符串形式的正则表达式编译为Pattern对象。
增加代码复用性,提高效率。
compile(pattern, flags=0)
练习:
text1 = "JGood is a handsome boy, he is cool, clever, and so on ..." text2 = "Good night, Good morning" regex = re.compile(r‘\w*oo\w*‘) # 编译表达式对象 print(regex.findall(text1)) # 对字符串1操作 print(regex.findall(text2)) # 对字符串2操作 # 输出结果 [‘JGood‘, ‘cool‘] [‘Good‘, ‘Good‘]
目的:去已经匹配到的数据中再提取数据
origin = "hello alex bcd alex lge alex acd 19" r1 = re.split("(alex)", origin, 1) #以alex为分割符分割字符串,分割一次,并输出分割符alex print(r1) r2 = re.split("(al(ex))", origin, 1) #以alex为分割符分割字符串,并以ex再次侵害,并输出分割符alex print(r2) # 输出结果 [‘hello ‘, ‘alex‘, ‘ bcd alex lge alex acd 19‘] [‘hello ‘, ‘alex‘, ‘ex‘, ‘ bcd alex lge alex acd 19‘]
标签:
原文地址:http://www.cnblogs.com/liangdalong/p/5582479.html