搜索文本文件并保存到特定变量

2024-10-01 17:23:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经看了前面的问题和我的问题的答案,但似乎无法让这个工作。我对python非常陌生,所以我为这个基本问题提前道歉

我正在一个单独的软件中运行蒙特卡罗模拟。它创建了一个相当长的文本文件输出。我想检索一个标题下的3个值。我已经创建了以下代码来隔离我想要的文本文件部分

f = open("/Users/scott/Desktop/test/difinp0.txt","rt")
difout = f.readlines()
f.close()

d = range(1,5)

for i, line in enumerate(difout):
    if "Chi-Square Test for Difference Testing" in line:
        for l in difout[i:i+5]: print(l)

这将产生以下结果:

差异检验的卡方检验

      Value                             12.958
      Degrees of Freedom                    10
      P-Value                           0.2261

注意:标题和标题为“值”的下一行之间有一个空行

在输出中有不同的统计数据具有相同的标签,但我需要在标题“差异测试的卡方检验”下的统计数据

我想要的是将这些值保存到3个变量中,以便以后使用

chivalue(在本例中为12.958

chidf(在本例中为10)

芯片(在本例中为0.2261

我试图列举“l”并从中检索,但我似乎无法让它起作用

任何想法都将不胜感激。再次为这样一个基本问题道歉


Tags: 答案代码in标题for软件valueline
1条回答
网友
1楼 · 发布于 2024-10-01 17:23:37

一个选项是构建一个函数,解析输入行并返回所需的变量

def parser(text_lines):
    v, d, p = [None]*3
    for line in text_lines:
        if line.strip().startswith('Value'):
            v = float(line.strip().split(' ')[-1])
        if line.strip().startswith('Degrees'):
            d = float(line.strip().split(' ')[-1])
        if line.strip().startswith('P-Value'):
            p = float(line.strip().split(' ')[-1])
    return v,d,p

for i, line in enumerate(difout):
    if "Chi-Square Test for Difference Testing" in line:
        for l in difout[i:i+5]: 
            print(l)
        value, degree, p_val = parser(difout[i:i+5])

相关问题 更多 >

    热门问题