-
sys
sys模块代表Python解释器,主要用于获取和Python解释器相关的信息
常用属性和函数
sys.argv:获取运行Python程序的命令行参数。其中sys.argv[0]通常指该Python程序,其中sys.argv[1]代表Python程序提供的第一个参数,以此类推
sys.exit():通过引发SystemExit异常来退出程序。将其放在try模块中并不能阻止finally模块执行。
sys.path:该属性指定Python查找模块的路径列表。程序可通过修改该属性来动态增加Python加载模块的路径。
sys.maxsize:返回Python整数支持的最大值。32位系统上该值为2**31-1,,64位系统上该值为2**63-1。
sys.version:返回当前python解释器的版本信息。
sys.winver:返回当前Python解释器的主版本号。
sys.executable:返回Python解释器在磁盘上的存储位置。
sys.getfilesystemencoding():返回在当前系统中保存文件所用的字符集。
-
os
os模块代表了程序所在的操作系统,主要用于获取程序运行所在操作系统的相关信息。
常用属性和函数
os.environ:返回在当前系统上所有环境变量组成的字典。
os.getenv(key,default=None):获取指定环境变量的值。
os.putenv(key,value):用于设置环境变量。
os.getlogin():返回当前系统的登录用户名。类似的还有os.getuid(),os.getgroups(),getgid()等函数。
os.getpid():获取当前进程ID。
os.getppid():获取当前进程的父进程ID。
os._exit(n):用于强制退出Python解释器。将其放在try模块中可以阻止finally模块执行。
os.kill(pid,sig):将sig信号发送给pid对应的进程,用于结束该进程。类似的还有os.killpg(pgid,sig)。
os.system(command):运行操作系统上的指定命令。
-
time
常用函数
time.time():返回从1970年1月1日0点整到现在过了多少秒。
time.asctime([t]):将时间元组或struct_time转换为时间字符串。如果不指定参数t,默认转换当前时间。
time.ctime([secs]):将以秒数代表的时间转换为时间字符串。
time.gmtiime([secs]):将以秒数代表的时间转换为struct_time对象。如果不传入参数,默认转换当前时间。
time.localtime([secs]):将以秒数代表的时间转换为代表当前时间的struct_tune对象。如果不传入参数,默认转换当前时间。受时区影响。
time.mktime(t):用于将struct_time对象转换为秒数时间。是localtime函数的反转函数。
time.strftime(format[,t]):将时间元组或struct_time对象格式化为指定格式的时间字符串,如果不指定参数t,默认转换当前时间。
time.strptime(string[,format]):将字符串格式的时间解析成struct_time对象。
time.timezone:返回本地时区的时间偏移,以秒为单位。
time.tzname:返回本地时区的名字。
time.process_time():返回当前进程使用CPU的时间,以秒为单位。
-
json
json是一种轻量级、跨平台、跨语言的数据交换格式,json格式被广泛应用于各种语言的数据交换中。
常用函数
json.dump(obj,fp,*):将obj对象转换成json字符串输出到fp流中,fp是一个支持write()方法的类文件对象。用于从json字符串转换成Python对象。
json.dumps(obj,*):将obj对象转换成json字符串,并返回该json字符串。用于从json字符串转换成Python对象。
json.load(fp,*):从fp流中读取json字符串,将其恢复成json对象,其中fp是一个支撑write()方法的类文件对象。用于从Python字符串转换成json对象。
json.loads(s,*,encoding=None):将json字符串s恢复成json对象。用于从Python字符串转换成json对象。
-
re
常用函数
re.compile(pattern,flags=0):用于将正则表达式字符串编译成_sre.SRE_Pattern对象,该对象代表了正则表达式编译之后再内存中的对象,它可以缓存并复用正则表达式字符串。
re.match(pattern,string,flags=0):尝试从字符串的开始位置来匹配正则表达式,如果从开始位置匹配不成功,返回None。该函数返回_sre.SRE_Match对象。
re.search(pattern,string,flags=0):扫描整个字符串,并返回字符串中第一处匹配pattern的匹配对象。该函数返回_sre.SRE_Match对象。
_sre.SRE_Match.span(n):获取第n+1个组匹配位置。
_sre.SRE_Match.group(n):获取第n+1个组匹配的字串。
_sre.SRE_Match.re:该属性返回执行正则表达式匹配时所用的正则表达式。
_sre.SRE_Match.strint:该属性返回执行正则表达式匹配时所用的字符串。
re.findall(pattern,string,flags=0):扫描整个字符串,并返回字符串中所有匹配pattern的字串组成的列表。
re.finditer(pattern,string,flags=0):扫描整个字符串,并返回字符串中所有匹配pattern的字串组成的迭代器,迭代器的元素是_sre.SRE_Match对象。
re.fullmatch(pattern,string,flags=0):该函数要求整个字符串能匹配pattern,如果能匹配返回_sre.SRE_Match对象,否则返回None。
re.sub(pattern,repl,string,count=0,flags=0):该函数用于将string字符串中所有匹配pattern的内容替换成repl,count参数控制最多替换多少次,如果为0表示全部替换。
re.split(pattern,string,maxsplit=0,flags=0):使用pattern对string进行分割,该函数返回分割得到的多个字串组成的列表。maxsplit参数控制分割多少次。
re.escape(pattern):对模式中除ASCII字符、数值、下划线之外的他字符进行转义。
-
旗标(flags)
re.A或re.ASCII:该旗标控制w、W、、B、d、D、s、S只匹配ASCII,二部匹配所有的Unicode字符。对应正则表达式中的(?a)行内旗标。
w:匹配所有的单词字符,包括数字、26个英文字母和下划线。
W:匹配所有的非单词字符。
d:匹配0-9所有数字。
D:匹配非数字。
s:匹配所有空白字符,包括空格、制表符、回车符、换页符、换行符等。
S:匹配所有的非空白字符。
re.I或re.IGNORECASE:使用正则表达式匹配时不区分大小写。对应正则表达式中的(?i)行内旗标。
re.L或re.LOCALE:根据当前区域设置使用正则表达式匹配时不区分大小写,该旗标只能对bytes模式起作用。对应正则表达式中的(?L)行内旗标。
re.M或re.MULTILINE:多行模式。当指定该旗标后,"^"能匹配字符串的开头和每行的开头(紧跟在没一个换行符的后面),"$"能匹配字符串的末尾和每行的末尾。对应正则表达式中的(?m)行内旗标。
re.S或re.DOTALL:让点(.)能匹配包括换行符在内的所有字符,如果不指定不能匹配换行符。对应正则表达式中的(?s)行内旗标。
re.X或re.VERBOSE:通过该旗标允许分行书写正则表达式,也允许为正则表达式添加注释。对应正则表达式中的(?x)行内旗标。
re.DEBUG:显示编译正则表达式的Debug信息。 无行内旗标。
-
子表达式
正则表达式还支持圆括号表达式,用于将多个表达式组成一个子表达式(组)。支持如下用法:
1)(exp):匹配exp表达式并捕获成一个自动命名的组,后面可通过“1”引用第一个捕获组所匹配的字串,“2”引用第2个。
2)(?P<name>exp):匹配exp表达式并捕获成命名组,该组的名字为name参数。后面可通过(?P=name)来引用前面捕获的组。
3)(?:exp):匹配exp表达式但不捕获。后面无法使用“1”、“2”引用。
4)(?<=exp):括号中的子模式必须出现在匹配内容的左侧,但exp不作为匹配的一部分。
(?=exp):括号中的子模式必须出现在匹配内容的右侧,但exp不作为匹配的一部分。
例如:
re.search(r'(?<=<h1>).+?(?=</h1>)','<h1>123.456.789</h1>')
m.group()------->123.456.789
5)(?aiLmsux):旗标组,用于为整个正则表达式添加行内旗标。可同事指定一个或多个旗标。
6)(?imsx-imsx:exp):只对当前组起作用的旗标。
-
贪婪模式与勉强模式
在默认情况下,正则表达式的频度限定是贪婪模式的,就是尽可能多的匹配字符。
只要在频度限定之后添加一个英文问号,贪婪模式就变成了勉强模式,就是进可能少的匹配字符。