標籤:訊息 obj sig split object type sorted 產生 十六進位
原文來源於部落格園和CSDN
1.計算函數
abs()--取絕對值
max()--取序列最大值,包括列表、元組
min()--取序列最小值
len()--取長度
divmod(a,b)---取a//b除數整數以及餘數,成為一個元組
pow(x,y)--取x的Y次冪
pow(x,y,z)先x的Y次冪,再對Z取餘
round()--修改精度,如果沒有,預設取0位
range()快速產生一個列表
2.其他函數
callable()--返回是否可調用返回true或false
isinstance(a,type)---判斷前面的是否是後面的這種類型,返回true或false
cmp(a,b)---判斷ab是否相等,相等返回0,A<B返回-1,A>B返回1
range()--快速產生一個列表,類型為list
xrange()---快速產生一個列表,類型為xrange
3.類型轉換函式
type()
int()
long()
float()
complex()--轉換成負數
hex()--轉換成十六進位
oct()--轉換成八進位
chr()--參數0-252,返回當前的ASCII碼
ord()--參數ASCII碼,返回對應的十進位整數
4.string函數
str.capitalize()--對字串首字母大寫
str.replace(a.b)---對字串a改為b
str.split()---對字串進行分割,第一個參數是分隔字元,後面參數是分割幾次。
string函數匯入使用
5.序列函數
filter()--篩選返回為true返回成序列
lambda--定義函數
zip()---對多個列表進行壓縮組合成一個新列表,但是如果多個列表的元素個數不同,組合的結果按最少元素的進行組合
map--對多個列表進行壓縮組合成一個新列表,但是如果多個列表的元素個數不同,結果是將所有的元素取出來,缺少的以None代替。如果是None,直接組合,如果是函數,可以按函數進行組合
reduce()--對每個元素先前兩個執行函數,然後結果和後一個元素進行函數操作,如階乘,階加
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
urlencode與urldecode
當url中包含中文或者參數包含中文,需要對中文或者特殊字元(/、&)做編碼轉換。
urlencode的本質:把字串轉為gbk編碼,再把\x替換成%。如果終端是utf8編碼的,需要把結果再轉成utf8輸出,否則會亂碼。
urlencode
urllib庫裡面的urlencode函數,可以把key-value健值對的key、value都進行urlencode並轉換成a=1&b=2的字串。
#key-value健值對>>> from urllib import urlencode>>> data={‘a‘:‘a1‘,‘b‘:‘中文‘}>>> print urlencode(data)a=a1&b=%E4%B8%AD%E6%96%87>>> data={‘a‘:‘a1‘,‘b測試‘:‘中文‘}>>> print urlencode(data)a=a1&b%E6%B5%8B%E8%AF%95=%E4%B8%AD%E6%96%87
urllib庫裡面的quote函數,可以針對單個字串進行urlencode轉換。
#string>>> from urllib import quote>>> data="測試">>> print quote(data)%E6%B5%8B%E8%AF%95
urldecode
urllib只提供了unquote()函數。
>>> from urllib import unquote>>> unquote("%E6%B5%8B%E8%AF%95")‘\xe6\xb5\x8b\xe8\xaf\x95‘>>> print unquote("%E6%B5%8B%E8%AF%95")測試>>>
json處理
兩個函數:
| 函數 |
描述 |
| json.dumps |
將python對象編碼成JSON字串(對象->字串) |
| json.loads |
將已經編碼的json字串解碼為Python對象(字串->對象) |
json.dumps
文法:json.dumps(data, sort_keys=True, indent=4,separators=(self.item_separator, self.key_separator))
>>> import json>>> data={"a":"a1","b":"b1"}>>> jsonstr=json.dumps(data)>>> print jsonstr{"a": "a1", "b": "b1"}#輸出格式化>>> print json.dumps(data, sort_keys=True, indent=4,separators=(",",":")){ "a":"a1", "b":"b1"}>>>
python原始類型向json類型的轉換對照表:
| Python |
JSON |
| dict |
object |
| list,tuple |
array |
| str,unicode |
string |
| int,long,float |
number |
| True |
true |
| False |
false |
| None |
null |
json.loads
json.loads——返回Python欄位的資料類型
>>> import json>>> jsonstr=‘{"a":"a1","b":"b1"}‘>>> print json.loads(jsonstr){u‘a‘: u‘a1‘, u‘b‘: u‘b1‘}>>> jsonstr=‘{"a":"a1","b":null,"c":false,"d":{"aa":"aa1","bb":"bb1"}}‘>>> print json.loads(jsonstr){u‘a‘: u‘a1‘, u‘c‘: False, u‘b‘: None, u‘d‘: {u‘aa‘: u‘aa1‘, u‘bb‘: u‘bb1‘}}>>> jsonstr=‘[{"a":"a1"},{"b":"b2"}]‘>>> print json.loads(jsonstr)[{u‘a‘: u‘a1‘}, {u‘b‘: u‘b2‘}]
json類型轉換為python類型的對照表
| JSON |
Python |
| object |
dict |
| array |
list |
| string |
unicode |
| number(int) |
int,long |
| number(real) |
float |
| true |
True |
| false |
False |
| null |
None |
結論:print只能輸出python認識的資料類型,python.dumps才可以格式化輸出。
計算字串md5
方法一:使用md5包
import md5def calMd5(signdata,signkey,joiner=""): signdata=signdata+joiner+""+signkey m=md5.new(signdata) sign = m.hexdigest() return sign
方法二:使用hashlib包
import hashlibdef calHashMd5(signdata,signkey,joiner=""): signdata=signdata+joiner+""+signkey m=hashlib.md5(signdata) sign = m.hexdigest() return sign
計算hmacsha1
hmac:密鑰相關的雜湊運算訊息認證碼,hmac運算利用雜湊演算法(可以是MD5或者SHA-1),以一個密鑰和一個訊息為輸入,產生一個訊息摘要作為輸出。
作用:
(1)驗證接受的授權資料和認證資料;
(2)確認接受到的命令請求是已經授權的請求且傳送過程沒有被篡改
import hmacimport base64def hmacSha1WithBase64(signdata,signkey): sign = hmac.new(signkey, signdata,sha1).digest() sign = base64.b64encode(sign) return sign
字串拼接
from collections import OrderedDictdef composeStr(data,joiner,withkey=True,key_value_joiner="="): data = OrderedDict(sorted(data.items(), key=lambda t:t[0])) if withkey : signdata = joiner.join([key_value_joiner.join((str(key), str(elem))) for key, elem in data.iteritems()]) else : signdata= joiner.join([elem for key, elem in data.items()]) return signdata
python常用函數及模組