前言
最近在實作需要處理字串並且把它改成真實的判斷式,找 google 的過程中找到了一篇解答,當中剛好看到 Operator 這個套件,以下就用一些範例來示範~
實作
處理的範例: 1=1AND2<5OR8>9
可以使用re把字串處理成陣列
1 | re.split("AND|OR", payload) |
接著再使用
迴圈+同樣的方法去處理掉=、>、<
在處理完之後就可以找到所有的 key 以及 value 的陣列
接著就是要把 AND、OR 找出來存下來,這邊我會會使用split('AND', 1)只切第一個找到的AND字串,因為像是 SQL Where 子句的功能要一個一個處理才行,否則最後判斷會出問題。
1 | while re.search('(AND)|(OR)', payload) is not None: |
接著再切完之後會拿到operator_list知道裡面有哪些運算子的陣列,以原本的資料來說可以用迴圈去處理,這邊我就用簡單的範例來表示operator可以處理的東西。
像是operator除了可以判斷純數字以及純字串以外,也可判斷英文+數字的組合。
1 | operator_list = ['>', '<', '='] |
使用以上方法可以比對運算子,而使用以下方法則可以比對AND以及OR
1 | ex = ['AND', 'OR'] |
結論
透過 operator 這個函示庫讓我處理運算子們可以少很多事,藉此紀錄一下工作上使遇到的一些方法以及問題,最驚訝的就是可以比對英文+中文的判斷式,以一些韌體的本版資訊來說他們會擁有這樣的組合,在上傳之後要比對時用這樣的方法就很方便,若有什麼問題歡迎留言給我 😊