有意思的記錄-python

1.變量

類變量緊接在類名後面定義,至關於java和c++的static變量
實例變量在init裏定義,至關於java和c++的普通變量java

2.日期

#coding:utf-8
import time
import datetime
#日期格式化,time.strftime(format[, t]),
#輸出:2015-08-28 15:50:51
currentTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
#日期加減,輸出:2015-08-27
yesterday = datetime.date.today() - datetime.timedelta(days=1)
print yesterday.strftime("%Y-%m-%d")
#日期字符串轉化爲時間戳time.strptime(string[, format])
#struct_time格式:time.struct_time(tm_year=2015, tm_mon=3, tm_mday=12, tm_hour=15, tm_min=1, tm_sec=1, tm_wday=3, tm_yday=71, tm_isdst=-1)
#秒數:
timeStruct = time.strptime("2015-03-12 15:01:01", '%Y-%m-%d %H:%M:%S')
#返回秒數:1426143661.0
seconds = time.mktime(timeStruct)
print seconds

3.json

json.dumps(obj)JSON轉爲字符串
json.loads(str)字符串轉爲JSON

4.文件讀寫

queryFile = open('top_query')
for line in queryFile:
    print line
queryFile.close()
queryFile = open('top_query', 'w')
queryFile.write("miphone" + "\n")
queryFile.close()

5.字符串編輯距離

編輯距離也稱爲Levenshtein距離,用於衡量兩個字符串的類似度,一個字符串向另外一個字符串變化經歷的操做(新增/刪除/替換字符)次數。python提供官方庫python-levenshtein,使用以下。python

import Levenshtein
#輸出2,abc:b替換爲f得afc,刪除c得af,兩次操做
Levenshtein.distance("abc", "af")
#ratio函數得到小於1的小數,更直觀的衡量類似度,1徹底相同,0是徹底不一樣
#計算公式是r=(sum - dist) / sum,sum是兩字符串長度和,dist爲類編輯距離,刪除/新增距離依然+1,替換距離+2,r=(5-3)/5=0.4
Levenshtein.ratio("abc","af)
#中文比較,要轉爲unicode編碼,才能得到正確結果
Levenshtein.distance(u"中國",u"北京")
Levenshtein.distance(unicode("中國", "utf-8"), unicode("北京", "utf-8"))
Levenshtein.ratio(unicode("中國", "utf-8"), unicode("北京", "utf-8"))

這裏寫圖片描述

6.包含元組的list

元素是元組格式的list進行排序和格式化輸出c++

queryList = [("iphone", 1), ("miphone", 10)]
queryList.sort(key=lambda item:item[1], reverse=True)
str = ",".join([k + ":" + str(v) for (k, v) in queryList])

這裏寫圖片描述

7. 讀配置文件

爲了更好的維護程序,提升程序的靈活性,每每使用配置文件來設置程序中的變量。正則表達式

config文件json

[global]
ip=10.3.22.26
port=123
user=user
password=user

讀取api

import ConfigParser
config1 = ConfigParser.ConfigParser()
config1.readfp(open("config","rb"))
print config1.get("global","ip") 

8. 正則表達式處理字符串

替換字符串中特定格式的子串markdown

import re
pattern=re.compile('\[\d*\]') #[1],[1234]此類格式
str='[1]123 [2]245 [3]789'
#去掉[...]
str1=pattern.sub('',str)

以特定格式子串爲分隔符,分割字符串,返回列表iphone

arr=re.split('\[\d*\]',str1)

9.HTTP請求

import json
import time
import urllib
import urllib2

#用quote來轉義特殊字符
url = "http://mvideo.n.duokanbox.com/api/a1/search?kw=" +urllib.quote(keyword)
req = urllib2.Request(url)
conn = urllib2.urlopen(req)
res = conn.read()
res = json.loads(res)

print res

10.字符串長度

len(string)返回的是字節數,len(unicode)返回的是字符數ide

11.dict

#遍歷dict
for k,v in dict.iteritems():  
    print '%s:%s' % (k, v)  

12.編碼錯誤

提示:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)函數

解決:

import sys
reload(sys)
sys.setdefaultencoding('utf-8') 
相關文章
相關標籤/搜索