微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据后续行中的值读取行

如何解决根据后续行中的值读取行

我试图基于一行的内容进行计算,但前提是同一文档中的另一行满足特定条件。线条的顺序不一致。

文件可能看起来像这样:

Line A: 200
Line B: 200
Line C: 5

因此,示例条件是,如果C行等于或大于6,则将A行“ 200”中的值添加到计数器中。

我尝试了各种if语句,还尝试设置了BOOL。我都无法上班。我最近的尝试摘录如下:

    counter = 0
    good = True
    
        for line in text:
                line = line.strip()
                if line.startswith('Line C') :
                    rtime = re.findall('[0-9]+:[0-9]+',line)
                    for t in rtime:
                        if t < 6 :
                            good = False
                            print("-----To Small. Ignore Line A")
                            break
                        else :
                            good = True
                            
                while good == True :
                    if line.startswith('Line A') :
                        numstring = re.findall('[0-9]+',line)
                        for num in numstring:
                            temp = float(num)
                            counter = counter + temp
        
                    else : continue
                           print("----- good must be False. Should be ignoring Line A")

解决方法

首先,将文件中的所有行读入字典,以便您拥有

{'A行':200,'B行':200,'C行':5}

在此之后,很容易将条件应用于条件,例如“ if value ['Line A']> 6:”等。

我将与您一起执行此操作,因为这听起来有点功课。让我知道您是否需要更多帮助!

,

如果行数不太长,也许可以使用字典。一种简单的方法是将行添加到字典中,然后检查条件。

,
import re

allDataLines = []
allQualifierLines = []
dataFileName = 'testdata.txt'
def chckForQualifierLine(line):
    # lines containing qualifier
    if not line.startswith('Line C'):
        return False
    # do more checks here,if not good just return False
    
    allQualifierLines.append(line)
    return True

def chckForDataLine(line):
    # lines containing data    
    if not line.startswith('Line A'):
        return False
    # do more checks here,if not good just return False
    
    allDataLines.append(line)        
    return True

with open(dataFileName,'r') as text:
    # Further file processing goes here
    line = text.readline()
    while line != '':
        #print(line,end='')
        if not chckForQualifierLine(line):
            chckForDataLine(line)
        line = text.readline()
    for qualifierLine in allQualifierLines:
        # this line is valid qualifier
        print(f"Q: {qualifierLine}")
        for dataLine in allDataLines:
            # do with data line(s) what ever is to do here
            print(f"D: {dataLine}")
            

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?