㈠ 使用正則表達式提取文本中的有效數據
之前進行程序運行時,生成日誌文件,內含需提取的數據,但數據與文本信息交織,使用格式化輸入如fscanf()等函數難以區分。於是,了解到正則表達式強大文本處理能力,開始學習並利用正則表達式提取文本中的有效數據。本文旨在記錄,以備日後參考。
日誌文件片段如下,目標是分別提取「Particle Info」與「Fluid Info」所在行的數據,存儲為CSV格式至「particle_info.csv」與「fluid_info.csv」文件中。
提取數字字元串的正則表達式,推薦學習資源如「菜鳥教程」,理解並上手快速。正則表達式在線工具regex101能輔助學習與應用。
使用如下正則表達式匹配數字字元串:
- 表示匹配負號,-?表示匹配0或1次,考慮到負數情況;
\dp表示匹配數字,\d+表示匹配1或無窮次;
\.表示匹配字元 .,\.?表示匹配0或1次,考慮有小數或整數情況;
\d*表示匹配0或無窮次數字,考慮出現1.省略小數點後0的可能情況。
通過在線工具驗證正則表達式正確性後,執行代碼。python利用re模組,讀取文件,使用re.search()尋找匹配字元串,返回數據。re.findall()匹配所有滿足表達式的字元串,轉化為list存儲。使用命令行參數,輸出重定向獲取數據。
C++使用正則表達式庫,定義regex_number()函數篩選數字字元串,CSV格式返回。正則表達式中,\d與\.需要轉義。命令行參數增加程序靈活性。輸出重定向獲取數據。
後記,比較Python與C++代碼處理速度,Python處理29413行文件需約0.2s,C++需3s。可能C++代碼效率問題,期待高手指點。歡迎指出錯誤,避免在網路傳播錯誤信息。
㈡ 網路工程師Python正則表達式(re實驗2,Search函數,處理單行文本)
網路工程師在Python中使用正則表達式re模塊的Search函數處理單行文本的關鍵點如下:
Search函數的作用:
實驗目標:
正則表達式設計:
實驗步驟:
Python腳本實現:
實驗總結:
重點:在處理單行文本時,Search函數能夠高效地查找與正則表達式模式匹配的第一個位置,非常適合用於提取日誌文件中的關鍵信息。通過合理的正則表達式設計和Python腳本實現,可以高效地解析和分析日誌文件。
㈢ python怎麼根據正則表達式提取指定的內容
正則表達式是極其強大的,利用正則表達式來提取想要的內容是很方便的事。下面演示了在Python里,通過正則表達式來提取符合要求的內容。有幾個要注意的地方就是:
[1] 要用()將需要的內容包含起來
[2] 編號為0的group是整個符合正則表達式的內容,編號為1的是第一個(及對應)包含的內容
定義一個函數extractData,參數為regex, content, index:
@param regex: 正則表達式,用()將要提取的內容包含起來
@param content: 待提取內容
@param index: 從1開始,可以通過數(來得到,其中0是全部匹配
函數返回第一次匹配的內容
def extractData(regex, content, index=1):
r = '0'
p = re.compile(regex)
m = p.search(content)
if m:
r = m.group(index)
return r
定義一個正則表達式regex,內容為'第(.*)場雪'
定義一個字元串content,內容為'2002年的第一場雪'
定義一個變數index,值為1
調用函數extractData,傳入參數regex, content, index,輸出結果為'第一場雪'
通過這個例子,可以看到如何使用正則表達式在Python中提取指定內容。