1. 程式人生 > >python資料處理小技巧-2

python資料處理小技巧-2

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(判斷是否是文字連結)