Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Python中的字符串中提取特定值_Python_String_File - Fatal编程技术网

从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

你能展示一下你的代码吗?即使你认为它不是很好,它至少展示了一些可以改进的东西。