6.2. re
— Regular expression operations¶
2021.03.17 : 針對封包byte執行切割 在re中必須密切注意加上關鍵字 b"[\s\S]
import re
aaa = [b'']
data = b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00'
aaa = re.findall(b"[\s\S]{1500}", data) #就是这里需要做小小的改造,看仔细哦
aaa.append(data[(len(aaa) * 1500):])
print("ret:", aaa)
print(str(len(aaa)))
用RE模組作純數的辨別
re.findall 範例
以數字0-9為例,在下面範例中我們傳入function的command為 :
import re
secs = ""
command = "wait(20)" # 等20秒
command = "wait(20)" # 等20秒
matchPattern = re.findall("[0-9]", command) #matchPattern = ['2','0']
for i in range(len(matchPattern)): #用for 迴圈去 for
matchPattern這個list並轉換為字串
secs += matchPattern[i]
time.sleep(int(secs)) #轉換為int 並丟到 time.sleep()裡面做 睡20秒
for i in range(len(matchPattern)): #用for 迴圈去 for
matchPattern這個list並轉換為字串
secs += matchPattern[i]
time.sleep(int(secs)) #轉換為int 並丟到 time.sleep()裡面做 睡20秒
用RE模組作浮點(含小數點)數的辨別
以下範例的變化型是用於小數點的辨別
假設我們讀取xml的command是 waitSec(2.5)
要做的是等2.5秒 那麼如何把2跟5中間的小數點辨別進來呢???
如果用上述的範例 沒辦法辨識到小數點,因此需要下述的範例 :
elif ("waitSec" in test_func): message = " enter WAIT group and do : " + test_func slog.print_and_save_test_Log(key, message) secs = "" matchPattern = re.findall("[-+]?\d*\.\d+|\d+", test_func) for i in range(len(matchPattern)): secs += matchPattern[i] time.sleep(float(secs)) message = " leave sleep : WAIT." slog.print_and_save_test_Log(key, message)
沒有留言:
張貼留言