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