python資料處理小技巧-2
阿新 • • 發佈:2018-11-10
1,拆分含有多種分隔符的字串
import re
s = 'sdjjg,jsa|jjalg\tjljl.ljei,jks;dji'
#方法:使用s.split(), 分割單個符合
#使用正則表示式的re.split()方法,一次性拆分字串,使用+號表示分割連續多個
newStr = re.split(r"[,|.;\t]+",s)
print(newStr)
#['sdjjg', 'jsa', 'jjalg', 'jljl', 'ljei', 'jks', 'dji']
2,將多個小字串拼接成一個大字串
#方法1:迭代列表,連續使用"+" 操作依次拼接每個字串 #方法2:使用str.join(),更加快速的拼接列表中的每個字串 str = "a" strs = "b" strr = "c" listSTR = [str,strr,strs] newStr = str+strs+strr print(newStr) oneStr = "".join(listSTR) print(oneStr) #abc
3,對字串進行左,右,居中對齊
#方法1:使用字串的str.ljust(),str.rjust(),str.center()進行左右,居中對齊
#其方法所帶的2個引數意思分別為:最終字串的寬度 以及需要填充的字串
#方法2:使用format()方法,傳遞類似的'<20','>20','^20'引數完成同樣的任務
# 其中<20表示左對齊 並且寬度位20
4,去掉字串中不需要的字元
#方法1: str = " abc 123 " #去掉左右2邊的空格 newStr = str.strip() print (newStr) #abc 123 # 去掉左邊或者右邊的字元 #str.lstrip() str.rstrip() #去掉左右2邊的特殊符號 oneStr = "++++adv---" twoStr = oneStr.strip("+-") print(twoStr) #adv #方法2:刪除單個固定位置的字元,可以使用切片+拼接的方式 threeStr = "abc:123" fourStr = threeStr[:3]+threeStr[4:] print(fourStr) #abc123 # 方法3:字串的replace()方法或正則表示式re.sub()刪除任意位置字元 sss = "\tabc\t123\txyz\topq" #將\t用空字串替換 newsss = sss.replace("\t","") print(newsss) #abc123xyzopq #利用re.sub替換多個字串 abcsss = "\tabc\t123\txyz\topq\ndf" import re newaass = re.sub("[\t\n]","",abcsss) print(newaass) #abc123xyzopqdf #方法4:字串translate()方法,可以同時刪除多種不同的字元 newFiveStr = abcsss.translate(["\t\n"]) print(newFiveStr)
5,判斷是否已某某結尾或者開頭 以及 改變字串中的文字格式
#判斷字串a是否以b開頭或者結尾 #使用字串的str.startswith()和endwith()方法 #注意多個匹配時,使用元組 str = ["a.py","b.py","c.sh","d.txt"] oneStr = "" #取出其中以sh和txt結尾的 for s in str: if s.endswith((".sh",".txt")): oneStr += s print(oneStr) #c.sh d.txt #如何調整字串中文字的格式 #使用正則表示式re.sub()方法做字串替換,利用正則表示式的捕獲組 #捕獲每個部分內容,在替換字串中調整各個捕獲組的順序 newStr = "2016-05-23" #\d{}表示字串 r""表示原始字串 \2表示取第一個 /表示分割 Ustr = re.sub("(\d{4})-(\d{2})-(\d{2})",r"\2/\3/\1",newStr) print(Ustr) #05/23/2016 #使用標籤佔位符 newUstRT = re.sub("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})",r"\g<month>/\g<day>/\g<year>",newStr) print(newUstRT) #05/23/2016
6,設定檔案的緩衝及 訪問檔案的狀態
#檔案的緩衝行為分為:全緩衝,行緩衝,無緩衝
#全緩衝:open函式的buffering設定為大於1的整數n,n為緩衝區大小
#行緩衝:open函式的buffering設定為1
#無緩衝:open函式的buffering設定為0
#如何訪問檔案的狀態
#1,系統呼叫:標準庫中os模組下的三個系統呼叫stat,fstat,lstat獲取檔案狀態
#2,快捷函式,標準庫中os.path下一些函式,使用起來更加簡潔
#如os.path.isdir(), os.path.isfile,os.path.islink(判斷是否是文字連結)