簡體   English   中英

從 Python 中的字符串中提取特定值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM