从Python中的字符串中提取特定值
所以我从一个文件中读取了一些程序运行时间的数据。文本文件看起来像重复的“块”,如下所示:从Python中的字符串中提取特定值,python,string,file,Python,String,File,所以我从一个文件中读取了一些程序运行时间的数据。文本文件看起来像重复的“块”,如下所示: real 1m49.296s 用户1m40.597s sys 0m7.979s 我需要提取“user”和“sys”行中的分钟和秒值,以便将它们相加。到目前为止,我有一个for循环来计算文件中这些“块”的数量,我正在逐行读取,将real、user和sys行保存到不同的字符串变量中。我不认为这是一个很好的方法,但是,因为它需要我硬编码的数量“块”。显然,我是相当新的这一点,任何帮助是感激的 正则表达式是你的朋友
real 1m49.296s
用户1m40.597s
sys 0m7.979s
我需要提取“user”和“sys”行中的分钟和秒值,以便将它们相加。到目前为止,我有一个for循环来计算文件中这些“块”的数量,我正在逐行读取,将real、user和sys行保存到不同的字符串变量中。我不认为这是一个很好的方法,但是,因为它需要我硬编码的数量“块”。显然,我是相当新的这一点,任何帮助是感激的 正则表达式是你的朋友 检查匹配组部分: (……) 匹配括号内的任何正则表达式,并且 指示组的开始和结束;组的内容可以是 在执行匹配后检索,并且可以进行匹配 后面的字符串中带有\number特殊序列,如下所述 在下面要匹配文本'('或''),请使用(或),或将它们括起来 在字符类内:[(],[)] 因为您已经知道如何读取文本文件。 下面是一个示例,演示如何解析文本并进行计算
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
你能展示一下你的代码吗?即使你认为它不是很好,它至少展示了一些可以改进的东西。