str.spilt()
str.spilt(str=" ", num = string.count(str));
str:分隔符,默认为所有的空字符,包括空格、换行符"\n"、制表符"\t"等。
num:分隔次数
str = "小时候 总有他们在耳边叮咛嘱咐 小时候,总有他们牵着我们过马路。渐渐地,这种叮咛越来越少了。"
print(str.split())
print(str.split(',',1))
print(str.split('。'))
re.split()
re.split(pattern, string[, maxsplit])
按照能够匹配的子串将string分割,然后返回分割列表。
maxsplit:指定最大的分割次数,不指定全部分割
import re
line = "iphone7 iphone8; iphoneX, iphoneX plus, foo"
parts = re.split(r'[;,\s]\s*',line)
print(parts)
fields = re.split(r'(;|,|\s)\s*',line)
print(fields)
1.使用的分隔符是逗号、分号或者空格符,后面可跟任意数量的额外空格
2.根据捕获组进行分割,在使用re.split()时需要注意正则表达式模式中的捕获组是否包含在括号中。如果用到了捕获组,那么匹配的文本也会包含在最终结果中了。
fnmatch.fnmatch()
fnmatch.fnmatch(name, pattern)
测试name是否匹配pattern,是则返回True,否则返回False。
fnmatchcase()的功能是根据提供的大小写进行匹配。
其中“*”表示匹配任意个或多个字符,“?”表示匹配单个字符,[seq]表示匹配单个seq中的字符,[!seq]表示匹配单个不是seq中的字符
请找出以“济南市”为结尾的数据,以2500开头、后面紧跟两个数字并且结尾是数字“06”的数据。
from fnmatch import fnmatchcase as match
import fnmatchprint(fnmatch.fnmatch('py','.py'))
print(fnmatch.fnmatch('tlie.py','*.py'))print(fnmatch.fnmatch('123.txt','*.TXT'))
print(fnmatch.fnmatchcase('123.txt','*.TXT')) # 区分大小写
addresses = ['山东省 济南市','市中心','250001 3006',
]
a = [addr for addr in addresses if match(addr, '*济南市')]
print(a)
b=[addr for addr in addresses if match(addr, '2500[0-9][0-9] *06*')]
print(b)
str.startswith()
检查字符串是否以指定的子字符串开头,如果是则返回True,否则返回False。如果参数beg和end指定了具体的值,则会在指定的范围内进行检查。
str.startswith(str,beg=0,end=len(string))
str.endswith(suffix[, start[, end]])
suffix:可以是一个字符串或者一个元素
text = "2021年本商店电子商品销售数据"
print(text.startswith('2021'))
print(text.endswith('数据'))
print(text.find('商'))
str.replace()
str.replace(old, new[, max]) 替换
old:将被替换的子字符串
new:新字符串,用于替换old子字符串
max:可选参数,替换不超过max次
str = "www.toppr.com"
print("公告")
print("玲珑科技新地址:", str.replace("www.example.net","www.toppr.net"))
str = "this is string example ...hehe!!!"
print(str.replace('is', 'was', 3))
str.strip()
str.strip([chars])
删除字符串头尾指定的字符(默认为空格)
chars:表示删除字符串头尾指定的字符
str.lstrip([chars]) 删除字符串左边的空格或指定字符,返回值是删除完成后的新字符串
str.rstrip([chars]) 删除字符串右边的空格或指定字符,返回值是删除完成后的新字符串
str = " 我完全反对楼上的观点 "
print(str.strip());
str = "放X楼上的观点简直是放X "
print(str.strip('放X'))
str1 = " 我赞成楼上的观点 "
print(str1.rstrip())
str2 = "无语了,骂楼上,骂"
print(str2.rstrip("骂"))
abs(x) 绝对值
print("abs(-40):",abs(-40))
print("abs(100.10):",abs(100.10))
pow()
math.pow(x, y) x的y次方,参数转换为float
pow(x,y[, z]) 如果z存在,则再对结果进行取模,等于pow(x,y)%z,参数作为整形
import math
print("math.pow(100,2):",math.pow(100,2))
print("pow(100,2):",pow(100,2))
print("math.pow(100,-2):",math.pow(100,-2))
print("math.pow(2,4):",math.pow(2,4))
print("math.pow(3,0):",math.pow(3,0))
decimal
浮点数天生存在误差,decimal实例可以准确地表示任何数字。
a = 4.2
b = 2.1
print(a+b)
print((a+b) == 6.3)
from decimal import Decimal
a = Decimal('4.2')
b = Decimal('2.1')
print(a+b)
print(Decimal('6.3'))
print((a+b)==Decimal('6.3'))
from decimal import localcontext
a = Decimal('1.3')
b= Decimal('1.7')
print(a/b)
with localcontext() as ctx:ctx.prec = 3print(a/b)
with localcontext() as ctx:ctx.prec = 50print(a/b)
进制
bin():二进制
oct():八进制
hex():十六进制
如果不想在程序中出现0b, 0o, 0x这类进制前缀符,可以使用format函数来处理。
x = 123
print(bin(x))
print(oct(x))
print(hex(x))
print(format(x,'b'))
print(format(x,'o'))
print(format(x,'x'))x = -123
print(format(x, 'b'))
print(format(x, 'x'))
print(format(2**32 + x, 'b'))
print(format(2**32 + x, 'x'))
print(int('4d2', 16))
print(int('10011010010', 2))
time.time()
返回当前时间的时间戳。
import time
def procedure():time.sleep(2.5)t0 = time.clock()procedure()
print(time.clock()-t0)
t0=time.time()
procedure()
print(time.time()-t0)
Calendar
calendar.calendar(year, w=2, l=1, c=6):返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。每日宽度间隔为w字符。每行长度为21*w+18+2*c。l代表每星期行数。
calendar.firstweekday():返回当前每周起始日期的设置。在默认下,首次载入calendar模块时返回0,即表示星期一。
calendar.isleap(year):是闰年则返回True,否则返回False
calendar.leapdays(y1,y2):返回在y1,y2两年之间的闰年总数。
calendar.month(year, month, w=2, l=1):返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符,每行长度为7*w+6。l表示每星期的行数。
calendar.monthcalendar(year, month):返回一个整数的单层嵌套列表,每个子列表装载代表一个新奇的整数,year年和month月外的日期都设为0.范围内的日子都由该月第几日表示,从1开始
calendar.monthrange(year, month):返回两个整数,第一个是该月的首日是星期几,第二个是该月的天数
calendar.prcal(year, w=2, l=1, c= 6):相当于print(calendar.calendar(year, w, l, c))
calendar.prmonth(year, month, w=2, l=1):
calendar.setfirstweekday(weekday):设置每周的起始日期,0(星期一)到6(星期日)
import calendar
calendar.setfirstweekday(calendar.SUNDAY)
print(calendar.firstweekday())
c = calendar.calendar(2022)
print(c)
m = calendar.month(2022,7)
print(m)
正则表达式re
compile(source, filename, mode[, flags[, dont_inherit]], optimize=-1)
将source编译为代码或这AST对象。字节码可以使用内置函数exec()来执行,而AST可以使用内置函数eval()来继续编译。
import re
# 匹配模式,前面一组3个数字,后面一组8个数字
re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$')
A = re_telephone.match('010-12345678').groups()
print(A)
B=re_telephone.match('010-80868080').groups()
print(B)
re.match(pattern, string, flags=0)
pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位
匹配成功会返回一个匹配的对象,否则返回None。我们可以使用函数group(num)或函数groups()来获取匹配表达式。
flags:
re.I | 忽略大小写 |
re.L | 根据本地设置而更改\w, \W, \b, \B, \s, 以及\S的匹配内容 |
re.M | 多行匹配模式 |
re.S | 使"."元字符匹配换行符 |
re.U | 匹配Unicode字符 |
re.X | 忽略pattern中的空格,并且可以使用“#”注释 |
group(num=0):匹配的整个表达式的字符串,group()可以一次输入多个组号,在这种情况下它将返回一个包含哪些组所对应值的元组
groups():返回一个包含多组字符串的元组
import re
text = input("请输入你的邮箱地址:\n")
if re.match(r"[0-9a-zA-Z_]{0,19}@163.com", text):print('你的邮箱地址合法!')
else:print('你的邮箱地址非法!')