from collections import deque
def search(lines, pattern, history=6):
"""每次匹配成功時,就輸出當前的匹配行,以及最後匹配成功的n行文字
:param lines: 全部文字
:param pattern: 查詢內容
:param history: 最後n行
:return:
"""previous_lines = deque(maxlen=history) # 建立固定長度的佇列
for line in lines: # 遍歷文件全部行
if pattern in line: # 如果在當前行
yield line, previous_lines # 則返回當前匹配行內容,和前面匹配到的行內容
if __name__ == '__main__':
with open('file_name.txt') as f:
for line, prev_lines in search(lines=f, pattern='hello', history=5): # 當匹配成功時, 不斷的呼叫search生成器函式
# 然後是輸出一些東西
for prev_line in prev_lines: # 最後匹配成功的n行文字
print(prev_line, end=' ')
print(line, end=' ') # 當前匹配到的行
Jmeter正規表示式 取第n個匹配到的資料
最近在工作中遇到乙個這樣的介面測試問題,需要刪除已有的free id並更新已有的free id,之前的做法 1 先呼叫獲取所有free id的介面,在下面寫一條正則匹配,匹配所有free id 2 然後呼叫刪除介面,free id引數填變數 3 呼叫更新介面,free id引數填變數 結果導致更新的...
每隔n步迴圈刪除,返回最後乙個元素
題目 有乙個陣列a n 順序存放0 n 1,要求每隔兩個數刪掉乙個數,到末尾時迴圈至開頭繼續進行,求最後乙個被刪掉的數的原始下標位置。以8個數 n 7 為例 0,1,2,3,4,5,6,7 0 1 2 刪除 3 4 5 刪除 6 7 0 刪除 如此迴圈直到最後乙個數被刪除。題解一 暴力解法,模擬,一...
集合的前N個元素
集合的前n個元素 編乙個程式,按遞增次序生成集合m的最小的n個數,m的定義如下 1 數1屬於m 2 如果x屬於m,則y 2 x 1和z 3 x 1也屬於m 3 此外再沒有別的數屬於m。可以用兩個佇列a和b來存放新產生的數,然後通過比較大小決定是否輸出,具體方法如下 1 令fa和fb分別為佇列a和佇列...