日期:2019-01-16 15:25:45
作者:Bay0net
介绍:收集一些 python 的模板、函数等等
0x01、 函数汇总
1.1 常用的东西
1.1.1 生成随机数
import random
print random.randrange(1,4)
1.1.2 strip 和 split
strip() 方法用于移除字符串头尾指定的字符(默认为空格)
str = "0000000this is string example....wow!!!0000000";
print str.strip( '0' );
output:this is string example....wow!!!
split() 用来分割字符串
import re
s = 'www.baidu.com'
s2=s.split('.')
print s2
print type(s2)
print s2[1]
s3=s.split('.',1)
print s3
a='Beautiful, is; better*than\nugly'
# 四个分隔符为:, ; * \n
x= re.split(',|; |\*|\n',a)
print(x)
1.1.3 format 格式化输出
print('{A} {A} {B}'.format(A='Hello',B='Hi'))
for i in range(1,10):
print "第{a}次解密".format(a=i)
输出个人信息
name = 'GP'
sex = 'male'
age = 20
print '%s is %010.5f years old, %s is %s '%(name,age,name,sex)
>>>GP is 0020.00000 years old, GP is male
1.1.4 进制转换

需要注意的是,bin()、oct()、和hex()的返回值都是字符串,分别带有 0b、0o、0x 前缀
1.2 list 相关
1.2.1 排序输出
a_list = [3,1,2,3]
print sorted(a_list)
print sorted(a_list,reverse=True) #倒叙输出
1.2.2 循环输出多个 list
list1=[1,2,3]
list2=[2,4,4]
list3=[3,1,1]
list4=[3,4,3]
for i in range(1,5):
exec("print (list"+str(i)+")”)
# exec('print list'+str(i))
1.3 string 相关
1.3.1 连接字符串
str = "-";
seq = ("a", "b", "c"); # 字符串序列
print str.join( seq );
1.3.2 string 模块
#-*- coding:utf-8 -*-
import string #导入string这个模块
print string.digits #输出包含数字0~9的字符串
print string.letters #包含所有字母(大写或小写)的字符串
print string.lowercase #包含所有小写字母的字符串
print string.uppercase #包含所有大写字母的字符串
print string.punctuation #包含所有标点的字符串
print string.ascii_letters #与string.letters一样
1.4 dict 相关
1.4.1 对字典进行排序输出
dict = {'11': '1', '24': '5', '59': '6', '18': '6'}
#按value排序
print(sorted(dict.items(),key=lambda item:item[1]))
#反序
print(sorted(dict.items(),key=lambda item:item[1],reverse=True))
#按Key排序
print(sorted(dict.items(),key=lambda item:item[0]))
0x02、实例
2.1 批量获取网址的状态码
#coding:utf-8
#文本格式:http://127.0.0.1,一行一个
import requests
s= 'please input your file name'
print s
urlname = raw_input()
fobj= open(urlname,'r')
i = fobj.readlines()
for k in range(0,len(i)):
print i[k]
i[k]=i[k].strip()
r = requests.get(i[k])
print r.status_code
fobj.close()
2.2 猜点数游戏
import random
def game():
print '<<<GAME START!>>>'
out = raw_input("big or small?:")
print '<<<ROLE !>>>'
a=random.randrange(1,7)
b=random.randrange(1,7)
c=random.randrange(1,7)
a_list = [a,b,c]
a_sum=sum(a_list)
print 'The result is ',a_list,a_sum
# roll_result(sum)
print roll_result(a_sum)
if out == roll_result(a_sum):
print 'You Win!'
else:
print 'You Lost'
def roll_result(total):
isbig = 11<= total <=18
issmall = 3<= total <=10
if isbig:
return 'big'
if issmall:
return 'small'
game()
其中牵扯到,把数字转成字符,0-18是 small,19-36是 big,可以用下面的方法
def num_to_str(num):
if 10<=num<=18:
return 'big'
if 1<=cnum=9:
return 'small'
2.3 输出一年所有日期
import datetime
start = '19950101'
end = '19960101'
datestart=datetime.datetime.strptime(start,'%Y%m%d')
dateend=datetime.datetime.strptime(end,'%Y%m%d')
while datestart<dateend:
datestart+=datetime.timedelta(days=1)
print datestart.strftime('%Y%m%d')
2.4 输出 4 位数数字
fp=open('1.txt','w')
for i in range(0,10000):
fp.write('%04d\n'%(i))
fp.close()
0x03、小特性
3.1 输出不换行的方法
Python2:
在 print 后面加一个逗号逗号即可。
print 'hello',
Python3:
使用 end 参数
print('hello',end='')
想要一个换行,直接 print 即可
4.2 获取输入
Python2:
使用 raw_input()
Python3:
使用 input()
0x04、模块使用
4.1 base64 模块
base64:含有 64 个字符,大小写字母、数字、【+和/】,结尾可能出现【=】
base32:包含 26 个大写字母和 2-7 数字
base16:包含 16 个 16进制的大写数字和字母
使用方法:
import base64
print base64.b64encode('加密的文字')
print base64.b64decode('SGVsbG8sIEkgYW0gRGFycmVuIQ==')
3.2 多线程 threading 模块
0x05、python 的编码问题
1、为啥每次开局都要使用 #coding:utf-8
?
如果代码没有使用 coding,那么默认所有字符是 ascii 码,不支持中文,所以会报错。
2、python2 内部所有编码统一为 unicode
unicode 可以处理世界上所有的语言。
注意,utf-8 是 unicode 的一种实现形式。
3、关于编码转换
python 内部的编码统一为 unicode,所以遇到编码问题,需要先decode()成 unicode,再encode()成指定的编码。
比如:html = html.decode('gbk').encode('utf-8')
4、字典中,直接输出会出问题。
#coding:utf-8
tmp = {1:'你好吗',2:'test'}
print tmp
output:{1: '\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x90\x97', 2: 'test'}
正确的方法:
tmp = {1:'你好吗',2:'test'}
for i in tmp:
print tmp[i]