如何解决根据后续行中的值读取行
我试图基于一行的内容进行计算,但前提是同一文档中的另一行满足特定条件。线条的顺序不一致。
文件可能看起来像这样:
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 举报,一经查实,本站将立刻删除。