例如,某軟體的log檔案中的日期格式為yyyy-mm-dd
:
2019-05-21 10:39:26 status unpacked python3-pip:all
2019-05-23 10:49:26 status half-configured python3
2019-05-23 10:52:26 status installed python3-pip:all
2019-05-24 11:57:26 configure python3-wheel:all 0.24
...
要求:將日期格式改為mm/dd/yyyy
。
解決方案:使用正規表示式re.sub()
方法做字串替換,利用正規表示式的捕獲組捕獲每個部分內容,在替換字串中調整各個捕獲組的順序。
re.sub(pattern, repl, string, count=
0, flags=
0)
pattern:匹配的正規表示式
string:要匹配的字串
flags:標記為,用於控制正規表示式的匹配方式。如:是否區分大小寫,多行匹配等等
repl:替換的字串,也可作為乙個函式
count:模式匹配後替換的最大次數,預設0表示替換所有匹配
返回通過正則替換後的字串。如果pattern
沒有找到,則不加改變地返回string
。
import re
# f = open('/var/log/messages')
# log = f.read()
log =
'''2019-05-21 10:39:26 status unpacked python3-pip:all
2019-05-23 10:49:26 status half-configured python3
2019-05-23 10:52:26 status installed python3-pip:all
2019-05-24 11:57:26 configure python3-wheel:all 0.24
'''answer = re.sub(r'(\d)-(\d)-(\d)'
, r'\2/\3/\1'
, log)
# answer = re.sub(r'(?p\d)-(?p\d)-(?p\d)', r'\g/\g/\g', log)
print
(answer)05/
21/201910:
39:26 status unpacked python3-pip:
all#結果05/
23/201910:
49:26 status half-configured python305/
23/201910:
52:26 status installed python3-pip:
all05/24
/201911:
57:26 configure python3-wheel:
all0.24
當分組很多時,可以給分組起別名:
re.sub(r'(?p\d)-(?p\d)-(?p\d)'
, r'\g/\g/\g'
, log)
分解調整字串中的字元 Python 版
題目 給定乙個字元型別的陣列 chas,其中只有數字和 星型字元,現在想把所有的星型字元挪到陣列的左邊,數字字元全部放到右邊,順序不許變。要求 時間複雜度為 o n 空間複雜度是o 1 def replace stars self,str list 將所有 號移動到陣列的左側 j len str l...
逆轉中文字串 逆轉字串
要顯示中文必須使用unsigned char型,如果使用char 就裝不下了。然後要明白乙個unsigned char 其實只是裝了乙個中文字元的一半。列印的時候如果只列印乙個unsigned char有可能什麼都看不到。所以逆轉的時候要把兩個unsigned char看成乙個整體來交換。如下 in...
php中文字元字串反轉字串
header content type text html charset utf 8 s 這是我的技術部落格,歡迎多多來訪!function str rev str 用mb strlen函獲取算utf8字串的長度 length mb strlen str,utf 8 宣告乙個陣列備用 arr ar...