繁体   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