Python简单的练习二

#!/usr/bin/env python # -*- coding: utf-8 -*- # name = raw_input() # print
#name # a = u'中文输入' # print a # print 'hi,%s,you have $%d' % ('jesse',1000) #
# age = 18 # if age >= 50: #   print 'laoren' # elif age >= 30: #   print
#'chengnian' # elif age >= 10: #   print 'weichengnian'

# names = ['sss','bbb','vvvv','ffff','tttttt'] for name in names:     print
# name

#sum = 0 for x in [1,2,3,4,5,6,7,8,9,10]:     sum = sum + x print sum


#rang 可以生成1-10000 sum = 0 for x in range(1000):     sum = sum +x print sum

# sum = 0 n = 99 while n > 0:     sum = sum + n     n = n-2 print sum

# s = set([1,2,3]) print s

# print cmp(1,2) print cmp(2,2) 相同返回0,不同返回-1

# print int(12.4)

# def xx(x,y):     print x*y xx(5,6)

# x = 'abc' y = 123 print isinstance(x,str)  #isinstance 监测字符串,返回false或者tree
# print isinstance(y,str)

# def is_odd(n):     return n % 2 == 1 print
# filter(is_odd,[1,2,3,4,5,6,7,8,9,10]) filter 可以过滤一部分元素

# def not_empty(s): #     return s and s.strip() # print filter(not_empty,
#['A', '', 'B', None, 'C', '  ']) #删除空格的元素

# def now():     print '2013-12-25' f = now print f()

# 在Python中,一个.py文件就称之为一个模块(Module)。
# 如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。
# 举个例子,一个abc.py的文件就是一个名字叫abc的模块,一个xyz.py的文件就是一个名字叫xyz的模块。

# 现在,假设我们的abc和xyz这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲突。方法是选择一个顶层包名,比如建立mycompany
#文件夹. #引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在,abc.py模块的名字就变成了mycompany.abc,类似的,x
#yz.py的模块名变成了mycompany.xyz。

# 请注意,每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__in
# it__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是mycompany。

# import re
# m = re.match(r'\d{3}', '123456789')
# print m.group(0)

# import re
# m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
# print m.group(0)
# print m.group(1)
# print m.group(2)
# 
# '00\d'可以匹配'007',但无法匹配'00A';

# '\d\d\d'可以匹配'010';

# '\w\w\d'可以匹配'py3';

# .可以匹配任意字符,所以:

# 'py.'可以匹配'pyc'、'pyo'、'py!'等等。
# 要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符:

# 来看一个复杂的例子:\d{3}\s+\d{3,8}。

# 我们来从左到右解读一下:

# \d{3}表示匹配3个数字,例如'010';

# \s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配' ',' '等;

# \d{3,8}表示3-8个数字,例如'1234567'。

# 综合起来,上面的正则表达式可以匹配以任意个空格隔开的带区号的电话号码。

# 如果要匹配'010-12345'这样的号码呢?由于'-'是特殊字符,在正则表达式中,要用'\'转义,所以,上面的正则是\d{3}\-\d{3,8}。

# 但是,仍然无法匹配'010 - 12345',因为带有空格。所以我们需要更复杂的匹配方式。

# 要做更精确地匹配,可以用[]表示范围,比如:

# [0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线;

# [0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','Py3000'等等;

# [a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量;

# [a-zA-Z\_][0-9a-zA-Z\_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。

# A|B可以匹配A或B,所以(P|p)ython可以匹配'Python'或者'python'。

# ^表示行的开头,^\d表示必须以数字开头。

# $表示行的结束,\d$表示必须以数字结束。

# 你可能注意到了,py也可以匹配'python',但是加上^py$就变成了整行匹配,就只能匹配'py'了。

# re模块
# 有了准备知识,我们就可以在Python中使用正则表达式了。Python提供re模块,包含所有正则表达式的功能。由于Python的字符串本身也用\转义,所以要特别注意:
# 
# s = r'ABC\-001' # Python的字符串
# # 对应的正则表达式字符串不变:
# # 'ABC\-001'
# 先看看如何判断正则表达式是否匹配:

# >>> import re
# >>> re.match(r'^\d{3}\-\d{3,8}$', '010-12345')
# <_sre.SRE_Match object at 0x1026e18b8>
# >>> re.match(r'^\d{3}\-\d{3,8}$', '010 12345')

# match()方法判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None。常见的判断方法就是:

# test = '用户输入的字符串'
# if re.match(r'正则表达式', test):
#     print 'ok'
# else:
#     print 'failed'

# 分组
# 除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()表示的就是要提取的分组(Group)。比如:

# ^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码:

# >>> m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
# >>> m
# <_sre.SRE_Match object at 0x1026fb3e8>
# >>> m.group(0)
# '010-12345'
# >>> m.group(1)
# '010'
# >>> m.group(2)
# '12345'

#base64 加密
# import base64
# print base64.b64encode('binary\x00string')
# print base64.b64decode('YmluYXJ5AHN0cmluZw==')

# 由于标准的Base64编码后可能出现字符+和/,在URL中就不能直接作为参数,所以又有一种"url safe"的base64编码,其实就是把字符+和/分别变成-和_:
# import base64
# print base64.b64encode('i\xb7\x1d\xfb\xef\xff')
# print base64.urlsafe_b64encode('i\xb7\x1d\xfb\xef\xff')
# print base64.urlsafe_b64decode('abcd--__')

import hashlib
md5 = hashlib.md5()
md5.update('how to use md5 in python hashlib?')
print md5.hexdigest()

猜你喜欢

转载自blog.csdn.net/weixin_36171533/article/details/80438545