码迷,mamicode.com
首页 > 编程语言 > 详细

2018.8.20 Python之路---常用模块

时间:2018-08-20 22:48:57      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:abc   filename   mktime   turn   sea   png   取消   取值   upper   

一、re模块

查找:

    re.findall(‘正则表达式’,‘字符串’)    

    匹配所有符合正则表达式的内容,形成一个列表,每一项都是列表中的一个元素。

ret = re.findall(\d+,sjkhk172按实际花费928) # 正则表达式,带匹配的字符串,flag
ret = re.findall(\d,sjkhk172按实际花费928) # 正则表达式,带匹配的字符串,flag
print(ret)

     re.search(‘正则表达式’,‘字符串’)

 只匹配从左到右的第一个,得到的不是直接的结果,而是一个变量,通过这个变量的group方法来获取结果
如果没有匹配到,会返回None,使用group会报错
ret = re.search(\d+,sjkhk172按实际花费928)
print(ret)  # 内存地址,这是一个正则匹配的结果
print(ret.group()) # 通过ret.group()获取真正的结果
ret = re.search(\d+,sjkhk172按实际花费928)
if ret :   # 内存地址,这是一个正则匹配的结果
    print(ret.group()) # 通过ret.group()获取真正的结果

     re.match(‘正则表达式‘,‘字符串’)

 从头开始匹配,相当于search中的正则表达式加上一个^
ret = re.match(\d+$,172sjkhk按实际花费928)
print(ret)

字符串的扩展处理:替换、切割

        split:切割

s = alex83taibai40egon25
ret = re.split(\d+,s)
print(ret)     #[‘alex‘, ‘taibai‘, ‘egon‘, ‘‘]

       sub:替换

ret = re.sub(\d+,H,alex83taibai40egon25)
print(ret)     #alexHtaibaiHegonH



ret = re.sub(\d+,H,alex83taibai40egon25,1)
print(ret)    #alexHtaibai40egon25

      subn:替换。返回一个元组,第二个元素是替换的次数。

ret = re.subn(\d+,H,alex83taibai40egon25)
print(ret)
#(‘alexHtaibaiHegonH‘, 3)

re模块的进阶:时间/空间

      compile:编译正则表达式,编译成字节码,节省使用正则表达式解决问题的时间。

ret = re.compile(\d+)   # 已经完成编译了
print(ret)
res = ret.findall(alex83taibai40egon25)
print(res)
res = ret.search(sjkhk172按实际花费928)
print(res.group())

       finditer:返回一个迭代器,所有匹配到的内容需要迭代取到,迭代取到的每一个结果都需要group取具体值,节省内存空间。

ret = re.finditer(\d+,alex83taibai40egon25)
for i in ret:
    print(i.group())

分组: 

1.给不止一个字符的整体做量词约束的时候    www(\.[\w]+)+    www.baidu.com
2.优先显示,当要匹配的内容和不想匹配的内容混在一起的时候,
就匹配出所有内容,但是对实际需要的内容进行分组
3.分组和re模块中的方法 :
findall : 分组优先显示 取消(?:正则)
search :
可以通过.group(index)来取分组中的内容
可以通过.group(name)来取分组中的内容
正则 (?P<name>正则)
使用这个分组 ?P=name
split : 会保留分组内的内容到切割的结果中
ret = re.split(\d+,alex83taibai40egon25)
print(ret)
#[‘alex‘, ‘taibai‘, ‘egon‘, ‘‘]
ret = re.split((\d+),alex83taibai40egon25aa)
print(ret)
#[‘alex‘, ‘83‘, ‘taibai‘, ‘40‘, ‘egon‘, ‘25‘, ‘aa‘]

二、random模块

取随机小数:数学计算

print(random.random()) # 取0-1之间的小数
print(random.uniform(1,2)) # 取1-2之间的小数

 取随机整数 : 彩票 抽奖

print(random.randint(1,2)) # [1,2]
print(random.randrange(1,2)) # [1,2)
print(random.randrange(1,200,2)) # [1,200) 每两个取一个

从一个列表中随机取值:抽奖

l = [a,b,(1,2),123]
print(random.choice(l))
print(random.sample(l,2))

打乱一个列表的顺序,在原列表的基础上直接进行修改,节省空间

洗牌

l = [a,b,(1,2),123]
random.shuffle(l)
print(l)      #[(1, 2), ‘a‘, 123, ‘b‘]

验证码:

         4位数字验证码

         6位数字验证码

         6位数字+字母验证码

def code(n = 6,alpha = True):
    s = ‘‘
    for i in range(n):
        num = str(random.randint(0,9))
        if alpha:
            alpha_upper = chr(random.randint(65,90))
            alpha_lower = chr(random.randint(97,122))
            num = random.choice([num,alpha_upper,alpha_lower])
        s += num
    return s
print(code(4,False))
print(code(alpha=False))

三、时间模块(import time)

time.sleep(2)     程序走到这会等待2秒

时间格式:

       时间戳时间:

print(time.time())    #1534767054.6681

      格式化时间:

print(time.strftime(%Y-%m-%d %H:%M:%S)) # str format time
# 2018-08-20 20:17:08
print(time.strftime(%y-%m-%d %H:%M:%S)) # str format time
# 18-08-20 20:17:08
print(time.strftime(%Y-%m-%d %X))
# 2018-08-20 20:19:25
print(time.strftime(%c))
# Mon Aug 20 20:18:14 2018

      结构化时间:

struct_time = time.localtime()  # 北京时间
print(struct_time)
#time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20, tm_hour=20, tm_min=21, tm_sec=23, tm_wday=0, tm_yday=232, tm_isdst=0)
print(struct_time.tm_mon)
# 8
print(time.gmtime())     #伦敦时间

     时间戳时间换成字符串时间

struct_time = time.localtime(1500000000)
# print(time.gmtime(1500000000))
ret = time.strftime(%y-%m-%d %H:%M:%S,struct_time)
print(ret)

     字符串时间转时间戳时间

struct_time = time.strptime(2018-8-8,%Y-%m-%d)
print(struct_time)
res = time.mktime(struct_time)
print(res)

  技术分享图片   

练习题:

1.查看一下2000000000时间戳时间表示的年月日
时间戳 - 结构化 - 格式化
struct_t = time.localtime(2000000000)
print(struct_t)
print(time.strftime(%y-%m-%d,struct_t))

   2.将2008-8-8转换成时间戳时间

t = time.strptime(2008-8-8,%Y-%m-%d)
print(time.mktime(t))

  3.请将当前时间的当前月1号的时间戳时间取出来 - 函数

def get_time():
    st = time.localtime()
    st2 = time.strptime(%s-%s-1%(st.tm_year,st.tm_mon),%Y-%m-%d)
    return time.mktime(st2)
print(get_time())
4.计算时间差 - 函数
str_time1 = 2018-8-19 22:10:8
str_time2 = 2018-8-20 11:07:3
struct_t1 = time.strptime(str_time1,%Y-%m-%d %H:%M:%S)
struct_t2 = time.strptime(str_time2,%Y-%m-%d %H:%M:%S)
timestamp1 = time.mktime(struct_t1)
timestamp2 = time.mktime(struct_t2)
sub_time = timestamp2 - timestamp1
gm_time = time.gmtime(sub_time)
# 1970-1-1 00:00:00
print(过去了%d年%d月%d天%d小时%d分钟%d秒%(gm_time.tm_year-1970,gm_time.tm_mon-1,
                                 gm_time.tm_mday-1,gm_time.tm_hour,
                                 gm_time.tm_min,gm_time.tm_sec))
#   过去了0年0月0天12小时56分钟55秒

四、sys模块(import sys)

sys是和python解释器打交道的。

sys.argv     命令行参数List,第一个元素是程序本身路径

print(sys.argv)  # argv的第一个参数 是python这个命令后面的值
usr = input(username)
pwd = input(password)
usr = sys.argv[1]
pwd = sys.argv[2]
if usr == alex and pwd == alex3714:
    print(登录成功)
else:
    exit()

sys.exit(n)    退出程序,正常退出时exit(0),错误退出时sys.exit(1)

sys.path     返回模块的搜索路径

# 一个模块能否被顺利的导入 全看sys.path下面有没有这个模块所在的
# 自定义模块的时候 导入模块的时候 还需要再关注 sys.path

sys.modules   

print(sys.modules)  # 是我们导入到内存中的所有模块的名字,存在一个字典中 : 这个模块的内存地址
print(sys.modules[re].findall(\d,abc126))

五、os模块(import os  #os是和操作系统交互的模块)

os.makedirs(dirname1/dirname2)    可生成多层递归目录
os.removedirs(dirname1)    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir(dirname)    生成单级目录;相当于shell中mkdir dirname
os.rmdir(dirname)    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir(dirname)    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat(path/filename)  获取文件/目录信息
# exec/eval执行的是字符串数据类型的 python代码
# os.system和 os.popen是执行字符串数据类型的 命令行代码

# os.system(‘dir‘)  # 执行操作系统的命令,没有返回值,实际的操作/删除一个文件 创建一个文件夹 exec
# 程序要处理这些路径
# ret = os.popen(‘dir‘) # 是和做查看类的操作
# s =ret.read()
# print(s)
# print(s.split(‘\n‘))
# os.listdir / os.path.join
file_lst = os.listdir(D:\sylar\s15)
for path in file_lst:
    print(os.path.join(D:\sylar\s15,path))
print(‘-->‘,os.getcwd())  # current work dir 当前工作目录
# 并不是指当前文件所在的目录
# 当前文件是在哪个目录下执行的
ret = os.popen(dir) # 是和做查看类的操作
s =ret.read()
print(s)

os.chdir(D:\sylar\s15\day18)  # 切换当前的工作目录
ret = os.popen(dir) # 是和做查看类的操作
s =ret.read()
print(s)

 

2018.8.20 Python之路---常用模块

标签:abc   filename   mktime   turn   sea   png   取消   取值   upper   

原文地址:https://www.cnblogs.com/fengchong/p/9508337.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!