記一次簡單的正規表示式匹配實踐

2022-08-19 23:27:15 字數 1635 閱讀 5952

背景:

由於需要對大促期間的**日誌進行降級,需要驗證保留下來的70多個pageid的頁面是否生效。

如果使用常規手段,如果想要全量驗證,需要使用kafka收發資料的指令碼跑70+遍,想想就是一件很繁重很蠢的工作。

這個時候想到使用python進行輔助驗證,即可以進行全量校驗,又能節省時間。

思路:

1.將所有的pageid值放入文字檔案,配合open()和readline()讀取page_id,以陣列的形式儲存;

2.使用正規表示式函式re.search()定位到源資料中key為"page_id",並取其value值;

3.使用re.sub()將page_id陣列中的值,替換掉源資料中"page_id"的value值,這裡使用到for迴圈

4.在每個for迴圈中將替換之後的資料逐一傳送到kafka,這裡使用的是kafka模組中的kafkaproducer方法。

ok,思路清楚之後開始**的實現。

下面貼出主要的實現**

#

開啟並讀取檔案

f = open('

page_id.txt

', '

r', encoding='

utf-8')

lines =f.readlines()

l_length =len(lines)

data =

#這裡建立kafka傳送函式

defproduct(data):

producer.send(

'ssa_sdk_exposure_log

', data.encode('

utf-8'))

producer.flush()

#使用for迴圈替換並傳送資料

for i in range(0,len(lines)-1):

lines[i] = lines[i].strip('

\n')             #

這裡是為了去除讀取檔案中的page_id時,產生的\n

target1 = re.search('

"pageid":"(.*?)"

',testdata1) #

正規表示式匹配到pageid的一段字串

target = target1.group(1)                #

取匹配內容中第乙個括號裡的字串,如果是group(0),則返回整個匹配結果

testdata1 = re.sub(target,lines[i],testdata1)    #

使用re.sub()替換新的page_id

print

(testdata1)

product(testdata1)

在指令碼執行之前,開啟kafka接收命令視窗,使用重定向 > 將接收到的資料儲存在乙個txt檔案中;

然後執行傳送指令碼;

使用wc -l 檢視接收到的檔案條數是否與給的page_id頁面數一致,也可將檔案sz到本地進行分析。

寫在最後:最後驗證這一部目前還是自己手動去做的,後面有機會的話可以試一下能否利用**實現。

目前有個想法就是將kafka傳送、接收資料做成乙個工具的形式,借助pyqt,或者tkinter第三方介面化的庫實現。

專案中一次正規表示式的實踐

今天在專案中遇到這樣乙個需求 要求把一段html 中的注釋裡的某類表示式替換掉,而在注釋外的這類表示式不需要替換,例如 其中,在注釋內的 images a.jpg 要替換成 images a.jpg 替換後應該是這樣的 經過一番研究,深入了解了一下greedy reluctant和possessiv...

正規表示式 匹配

字串 void abtr quint32 ab 表示乙個正規表示式 template class bidirectionaliterator class allocator std allocator sub match bidirectionaliterator class match resul...

正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 解法 首先要想到用遞迴處理...