regex Python:为什么re.findall找不到模式?[关闭]

sqserrrh  于 2023-06-25  发布在  Python
关注(0)|答案(1)|浏览(133)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

20小时前关闭。
Improve this question
因此,我试图做一个测试脚本提取下载时间从文本文件。该文件名为“file.txt”,包含以下内容:
下载固件时间:0.084858101秒
下载固件时间:0.071814549秒
我只想获取数值。但是,我当前的代码不能正确地提取值。它只是输出:“下载次数:[]".下面是我的代码:

import re

# Function Definition

def extract_download_times(filename):
    pattern = r"Download FW Time: (\d+\.\d+) sec"
    download_times = []

    with open(filename, 'r') as file:
        content = file.read()
        matches = re.findall(pattern, content)

        for match in matches:
            download_times.append(float(match))

    return download_times

# Main

filename = 'file.txt' 
times = extract_download_times(filename)
print("Download times:", times)

当将该模式插入到re.findall函数时,将其放入一个单独的变量中可能不起作用,但即使将字符串模式直接插入到函数中,也会产生相同的结果。我该怎么弥补?
编辑:哎呀,在与文本文件内容匹配的模式方面犯了一些错别字。感谢所有可爱和礼貌的评论指出了这一点。尽管不匹配,但问题仍然存在。
感谢BDR提供的解决方案。我在我的代码中尝试了一下,它现在工作得很好。

k4emjkb1

k4emjkb11#

似乎用于查找文件中模式的正则表达式是错误的。
例如:

  • 在该文件中,有:Download FW Time:
  • 在正则表达式中:Download Time:

文件的有效正则表达式为:Download FW Time: ([\d]+|[\d]*\.[\d]+) sec
您可以使用基于实时Web的正则表达式编辑器(this tool for example)来尝试正则表达式。

注意:编辑后的正则表达式将匹配并捕获类型为1或.1或1.1的“数值”

相关问题