[英]Pulling out specific values from a string in Python
所以我正在從一個文件中讀取一些關於程序運行時間的數據。 文本文件看起來像這樣重復的“塊”:
real 1m49.296s user 1m40.597s sys 0m7.979s
我需要提取“user”和“sys”行中的分鍾和秒值以便總結它們。 到目前為止,我有一個用於文件中這些“塊”數量的 for 循環,並且我正在逐行讀取,將真實、用戶和 sys 行保存到不同的字符串變量中。 但是,我認為這不是一個好方法,因為它需要我硬編碼“塊”的數量。 顯然我對此很陌生,任何幫助表示贊賞!
Regular expression
是你的朋友。
https://docs.python.org/3/library/re.html
檢查匹配組部分:
(...)
匹配括號內的任何正則表達式,並指示組的開始和結束; 組的內容可以在執行匹配后檢索,並且可以稍后在字符串中使用 \number 特殊序列進行匹配,如下所述。 要匹配文字 '(' 或 ')',請使用 ( 或 ),或將它們括在字符 class 中:[(], [)]。
由於您已經知道如何閱讀文本文件。 下面是一個示例,顯示如何解析文本並進行計算
import re
foo = """real 1m49.296s
user 1m40.597s
sys 0m7.979s
"""
total_sec = 0
for item in foo.splitlines():
m = re.search(r"(real|user)\s+(\S+)m(\S+)s", item)
if m:
print(m.group(1), m.group(2), m.group(3))
total_sec += (float(m.group(2))*60+float(m.group(3)))
print("total %f" % total_sec)
結果:
('real', '1', '49.296')
total 109.296000
('user', '1', '40.597')
total 209.893000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.