Python小技巧合集
ofollow,noindex">智慧決策上手系列教程索引
收集一些零散的小技巧備用,不斷更新。
無法替換去除的空格
str.replace(str1,str2,max)
官方說明就這麼多,str1和str2只能是字串,不能用正則。
有時候replace怎麼也去不掉某些空格,這是因為空格有很多種,除了一般的 ' '
還有 '\xa0'
。
repr是替換掉反引號,反引號就是鍵盤左上角波浪鍵~下面那個 ,用repr可以打印出字串的本來面貌,把
\xa0`原樣打印出來。
import re s='AA \xa0BB' print(s) print(repr(s)) print(s.replace(' ','')) print(s.replace(' ','').replace('\xa0',u'')) print(re.sub('\s+','',s))
輸出的結果是:

image.png
從上面看到,re.sub還是很強大的,可以把各種空格都當做\s來替換,+是數量表示一個或多個,就是不管多少個空格和\xa0都會被一個\s+都替代。但是正則表示式re比較麻煩,不推薦使用。
遇到類似問題的解決思路是:用repr把它打印出來,看看都是什麼,然後逐個replace。
格式化輸出物件
可以利用json.dumps(obj,indent=2,ensure_ascii=False)來把一個物件、dict漂亮整齊的打印出來
import json obj={ 'a':1, 'b':{ 'b1':11, 'b2':22, } } s=json.dumps(obj, indent=2,ensure_ascii=False) print(s)
得到結果:

image.png
網頁資料導致的亂碼
如果html頁面header裡面沒有包含編碼格式,那麼BeautifulSoup就會當做網頁預設編碼'ISO-8859-1'來處理,導致亂碼。
解決辦法就是重新編碼再解碼成'gbk'中文字元:
s='ËÕÖÝÇàÌìÍøÂç¿Æ¼¼ÓÐÏÞ¹«Ë¾' s=s.encode('ISO-8859-1').decode('gbk') print(s)
輸出中文名。
檢測檔案是否存在
from os.path import exists if exists('c.txt'): with open('c.txt','a') as f: f.write('exist') f.close() else: with open('c.txt','a') as f: f.write('none') f.close()
將時間戳數字轉換成日期小時
time.time()獲取當前時間戳。
datetime.datetime.fromtimestamp(tm)將數字轉化為日期物件
strftime轉化為可讀字串,YmdHMS年月日時分秒
import time,datetime tm=int(time.time()) s=datetime.datetime.fromtimestamp(tm).strftime('%Y-%m-%d %H:%M:%S') print(s)
輸出:2018-10-09 07:48:52
字串轉為字典物件
適用於複製出來的headers
def str2obj(s, s1=';', s2='='): li = s.split(s1) res = {} for kv in li: li2 = kv.split(s2) if len(li2) > 1: res[li2[0]] = li2[1] return res headerstr=''' a: 111 b: 333 ccc ''' headers = str2obj(headerstr, '\n', ': ') print(headers)
輸出:{'a': '111', 'b': '333'}
智慧決策上手系列教程索引
每個人的智慧決策新時代
如果您發現文章錯誤,請不吝留言指正;
如果您覺得有用,請點喜歡;
如果您覺得很有用,歡迎轉載~
END