python 知识汇总


日期: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

参考链接 - python 格式化文本

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]

猜你喜欢

转载自www.cnblogs.com/v1vvwv/p/python-summary.html