如何循環遍歷循環中的剩余元素

在這里插入圖片描述

1、問題背景

給定一段文本,文本中包含多條錯誤信息,每條錯誤信息包含行號、錯誤路徑和錯誤信息。需要從文本中提取出這些錯誤信息,并以特定的格式輸出。

line, Error = 12, This is the Error
line, Error = 34, Another Error
line, Error = 90, Error Three

使用以下代碼可以完成提取錯誤信息的任務:

theText = 'ERROR: ...'
ERROR_RE = re.compile(r'^ERROR: <(?P<path>.*):(?P<line>[0-9]+)> (?P<error>.*)$')
mainName = '\Main.ext'
# 遍歷每一行
for fullline in theText.splitlines():match = self.ERROR_RE.match(fullline)if match:path, line, error = match.group('path'), match.group('line'), match.group('error')if path.endswith(mainName):callSomething(line, error)# 否則檢查下一行是否有'Call Trace:'# 檢查下一行是否有mainName并獲取行號# callSomething(linenumber, error)

問題是,在檢查完一行后,如何循環遍歷剩余的行以提取下一條錯誤信息?

2、解決方案

直接循環遍歷剩余元素的方法是將循環的第一行改為:

lines = theText.splitlines()
for (linenum, fullline) in enumerate(lines):
```pyhton然后,在匹配之后,可以通過查看 `lines[j]` 來獲取剩余的行,其中 `j` 從 `linenum+1` 開始,一直運行到下一個匹配。但是,解決這個問題的更巧妙的方法是首先將文本分割成塊。有許多方法可以做到這一點,但是作為前 perl 用戶,我的沖動是使用正則表達式。```pyhton
# 將文本分割成以 /^ERROR/ 開頭并一直持續到下一個 /^ERROR/ 或字符串結尾的塊。
#
# (?m)      - 讓 '^' 和 '$' 匹配每行的開頭/結尾
# (?s)      - 讓 '.' 匹配換行符
# ^ERROR    - 觸發匹配的開始
# .*?       - 以非貪婪的方式獲取字符,在以下表達式匹配時停止
# (?=^ERROR|$(?!\n)) - 匹配直到下一個 /^ERROR/ 或字符串結尾
# $(?!\n)   - 匹配字符串結尾。通常 '$' 就足夠了,但由于我們用 '(?m)' 啟用了多行模式,所以我們必須使用 '(?!\n)$' 來防止它匹配行尾。
blocks = re.findall('(?ms)^ERROR.*?(?=^ERROR|$(?!\n))', theText)

現在,我們可以遍歷這些塊,并從每個塊中提取錯誤信息:

for block in blocks:match = ERROR_RE.match(block)if match:line, error = match.group('line'), match.group('error')callSomething(line, error)

這將提取出文本中的所有錯誤信息,并以指定格式輸出。

代碼例子:

import retheText = '''ERROR: <C:\Includes\Library1.inc:123> This is the Error
Call Trace:<C:\Includes\Library2.inc:456><C:\Includes\Library2.inc:789><C:\Code\Main.ext:12> <Line:1> 
ERROR: <C:\Includes\Library2.inc:2282> Another Error
Call Trace:<C:\Code\Main.ext:34><C:\Code\Main.ext:56><C:\Code\Main.ext:78><Line:1> 
ERROR: <C:\Code\Main.ext:90> Error Three'''ERROR_RE = re.compile(r'^ERROR: <(?P<path>.*):(?P<line>[0-9]+)> (?P<error>.*)$')
mainName = '\Main.ext'# 將文本分割成塊
blocks = re.findall('(?ms)^ERROR.*?(?=^ERROR|$(?!\n))', theText)# 從每個塊中提取錯誤信息
for block in blocks:match = ERROR_RE.match(block)if match:line, error = match.group('line'), match.group('error')print(f'line, Error = {line}, {error}')

輸出結果:

line, Error = 123, This is the Error
line, Error = 2282, Another Error
line, Error = 90, Error Three

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38574.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38574.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38574.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Linux】線程周邊002之線程安全

&#x1f440;樊梓慕&#xff1a;個人主頁 &#x1f3a5;個人專欄&#xff1a;《C語言》《數據結構》《藍橋杯試題》《LeetCode刷題筆記》《實訓項目》《C》《Linux》《算法》 &#x1f31d;每一個不曾起舞的日子&#xff0c;都是對生命的辜負 目錄 前言 1.Linux線程互斥 1…

每日一題——Python實現PAT乙級1050 螺旋矩陣(舉一反三+思想解讀+逐步優化)6千字好文

一個認為一切根源都是“自己不夠強”的INTJ 個人主頁&#xff1a;用哲學編程-CSDN博客專欄&#xff1a;每日一題——舉一反三Python編程學習Python內置函數 Python-3.12.0文檔解讀 目錄 我的寫法 時間復雜度分析 空間復雜度分析 總結 我要更強 代碼解釋 時間復雜度 …

小區服務前臺小程序的設計

管理員賬戶功能包括&#xff1a;系統首頁&#xff0c;個人中心&#xff0c;住戶管理&#xff0c;管理員管理&#xff0c;員工管理&#xff0c;安保管理&#xff0c;安保分配管理&#xff0c;客服聊天管理 微信端賬號功能包括&#xff1a;系統首頁&#xff0c;公告&#xff0c;…

Mongodb集群中的分布式讀寫

學習mongodb&#xff0c;體會mongodb的每一個使用細節&#xff0c;歡迎閱讀威贊的文章。這是威贊發布的第81篇mongodb技術文章&#xff0c;歡迎瀏覽本專欄威贊發布的其他文章。如果您認為我的文章對您有幫助或者解決您的問題&#xff0c;歡迎在文章下面點個贊&#xff0c;或者關…

互聯網摸魚日報(2024-07-01)

互聯網摸魚日報(2024-07-01) 36氪新聞 最前線 | 孚能科技廣州基地投產&#xff0c;年產能30GWh&#xff0c;主推SPS大軟包產品 本周雙碳大事&#xff1a;800億元“風光火儲”大項目來了&#xff1b;光伏巨頭SolarEdge股價驟跌20%&#xff1b;韓國電池廠大火&#xff0c;鋰電安…

目標檢測算法的優缺點

目標檢測算法在計算機視覺領域具有廣泛的應用&#xff0c;其優缺點因算法類型和具體實現而有所不同。以下是對一些主流目標檢測算法優缺點的概述&#xff1a; 1. 傳統目標檢測算法 優點&#xff1a; 模型簡單&#xff1a;傳統目標檢測算法通常基于手工設計的特征和分類器&am…

Java進階學習|Day3.Java集合類(容器),Stream的使用,哈希初接觸

java集合類&#xff08;容器&#xff09; Java中的集合類主要由Collection和Map這兩個接口派生而出&#xff0c;其中Collection接口又派生出三個子接口&#xff0c;分別是Set、List、Queue。所有的Java集合類&#xff0c;都是Set、List、Queue、Map這四個接口的實現類&#xf…

Powershell 簡易爬蟲,提取種子網站的磁力鏈接

目錄 一. 需求二. 分析2.1 思路分析2.2 技術點 三. 代碼四. 效果 一. 需求 ?有網站如下所示&#xff0c;先要求從按照關鍵詞搜索到的網頁中&#xff0c;提取出所有的磁力鏈接。 二. 分析 2.1 思路分析 打開網頁之后&#xff0c;從網頁中先提取出所有的標題相關的url然后再打…

linux驅動部分內容整理

文章目錄 Linux驅動概念應用程序調用驅動程序流程驅動模塊的加載linux設備號加載和卸載注冊新字符設備注冊設備節點自動創建設備節點編譯編譯驅動程序編譯應用程序 地址映射ioctrl命令碼的解析 并發與競爭原子操作自旋鎖信號量互斥體 linux中斷DMA映射其它printkmemcpyvolatile…

如何在ubuntu上安裝ros-noetic?

如何在ubuntu上安裝ros-noetic&#xff1f; 1. 源由2. 快速安裝3. ROS學習 1. 源由 圍繞ros-noetic這個系統&#xff0c;前面已經有不少談及&#xff1a; Linux 35.5 JetPack v5.1.3ros-noetic安裝Linux 35.5 JetPack v5.1.3Fast-Planner編譯安裝Linux 35.5 JetPack v5.1.…

RocketMQ常用基本操作

文章中的rabbitmq使用的是rocketmq-all-5.1.3-bin-release版本&#xff0c;需要安裝包的可自行下載 RockerMQ啟動停止命令 啟動命令 nohup sh bin/mqnamesrv & nohup sh bin/mqbroker -n localhost:9876 --enable-proxy & 查看日志 tail -f ~/logs/rocketmqlogs/…

多線程編程的挑戰與解決方案

多線程編程的挑戰與解決方案 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 1. 多線程編程的挑戰 在現代軟件開發中&#xff0c;多線程編程成為處理并發任務…

PatchTST創新點

這篇論文的創新點主要集中在PatchTST模型的設計和應用中。以下是對其創新點的詳細說明&#xff1a; 創新點 頻道獨立補丁設計&#xff1a;PatchTST模型通過將多變量時間序列分割成不同的頻道&#xff0c;每個頻道作為單變量時間序列處理。每個頻道獨立地通過實例歸一化操作和補…

明星中藥企業系列洞察(九)一手好牌打的稀爛!近500年老字號鎖定退市,太安堂為何“塌房”了?

近日&#xff0c;太安堂發布公告稱&#xff0c;公司已收到深交所下發的《關于廣東太安堂藥業股份有限公司股票終止上市的決定》&#xff0c;深交所決定終止公司股票上市&#xff0c;預計其最后交易日期為7月4日。太安堂曾作為國內知名的中成藥上市公司之一&#xff0c;是國家級…

matlab仿真 通信信號和系統分析(上)

&#xff08;內容源自詳解MATLAB&#xff0f;SIMULINK 通信系統建模與仿真 劉學勇編著第三章內容&#xff0c;有興趣的讀者請閱讀原書&#xff09; 一、求離散信號卷積和 主要還是使用卷積函數conv&#xff0c;值得注意的是&#xff0c;得到的卷積和長度結果為81&#xff0…

node.js+uniapp(vue),阿里云短信驗證碼

reg.vue: 思路是&#xff1a;前端調用獲取驗證碼的接口 > 后端生成驗證碼返回給前端 > 前端渲染驗證碼 <template> <div> <input class"sl-input" v-model"phone" type"tel" maxlength"11" placeholder"手…

微信小程序畢業設計-微信食堂線上訂餐系統項目開發實戰(附源碼+論文)

大家好&#xff01;我是程序猿老A&#xff0c;感謝您閱讀本文&#xff0c;歡迎一鍵三連哦。 &#x1f49e;當前專欄&#xff1a;微信小程序畢業設計 精彩專欄推薦&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python畢業設計…

【在線評論】不同視角下在線評論對客戶滿意度和推薦度的影響—推文分析—2024-07-01

今天的推文主題是【在線評論】&#xff0c;重點關注可以關注第四篇&#xff0c;很全面地分析了在線評論的信息多維性。 第一篇從客戶的在線評論入手&#xff0c;將客戶消費的動機為功利、享受、社會滿足&#xff1b;第二篇是關于在線評論對消費者再次選擇同一家酒店的機制探索…

MySQL之主從同步、分庫分表

1、主從同步的原理 MySQL主從復制的核心是二進制日志 二進制日志&#xff08;binlog&#xff09;記錄了所有DDL語句和DML語句&#xff0c;但不包括數據查詢&#xff08;select、show&#xff09;語句。 1.1、復制分三步 master主庫在事務提交時&#xff0c;會把數據變更記錄…

電子戰學習筆記01:電子戰概論

0、寫在文前 本人在學習電子戰相關理論知識時&#xff0c;一直感覺無從下手&#xff0c;之后在老師的推薦下購買了《EW101&#xff1a;電子戰基礎》紙質書籍學習&#xff0c;所以將自己的學習筆記在CSDN上記錄一下&#xff0c;也供有需要的同學參考。 1、電子戰定義 電子戰&…