Skip to main content
 首页 » 编程设计

python之如何在 Python 中连续检查多个项目的条件

2025年05月04日14lyj

我正在用 Python 构建一个排序脚本。过去没有那么多编程,我遇到了一些困难。我有很多 CSV 文件,我使用 glob 函数一个一个地打开它们。然后我需要排序并打印满足特定 cryteria 的行。这是数据的简化版本:

   Col1    Col2 ....Col 2n 
Row 1   30     0.25 
Row 2   57     0.11 
Row 3   100    0.24 
Row 4   55     0.26 
Row 5   60     0.28 
................... 
Row n   11     0.36 

我的脚本在检查所有行时运行良好,但我需要再包含一个条件。我只想按顺序打印一个接一个的行。我的意思是,假设我想打印 Col 1 > 50 的三行。因此,如果 Col_1 在第一行、第二行和第三行中 >50,我将打印这些行。但是,如果第 1 行中的 Col_1>50 但第 2 行中的 <50,我将不得不跳过这些行并从下一行开始。对不起,如果我让你有点困惑。 所以,基本上我需要连续打印所有符合条件的行。 在上面的示例中,条件 Col1>50 我需要连续打印三行满足该条件的行。所以脚本应该打印第 2-4 行。

更多内容:理想情况下,我希望脚本根据用户的输入来确定应满足条件的行数。因此,如果用户输入 4 - 连续四行应该满足条件,10 - 那么所有 10 行都应该满足条件。另外,我想输入要检查的行数。所以基本上:

  1. 输入要检查的循环数...
  2. 连续多少个周期应该符合标准...

稍后我将尝试在一些 GUI 界面中实现它,其中可以从下拉列表中选择循环次数和条件。

这是我的脚本:

csvfiles = glob.glob('/stats/*.stat') 
for filename in csvfiles:  
    reader = csv.reader(open(filename)) 
    for row in reader:                                
            col0, col3, col4, col5, col23, col24, col25 = float(row[0]), float(row[3]), float(row[4]), float(row[5]), float(row[23]), float(row[24]), float(row[25])  
            if col4 >= 9.00 and col5 > 1.00: 
               print("   %.0f   " % col0,'|', "%.12f" % col4, "%.12f" % col5, "%.12f" % (col4/col5), "%.12f" % (100*col25), "%.12f" % col3, "%.12f" % col23, "%.12f" % col24) 

请您参考如下方法:

添加一个计数器和两个数组来存储前面的行。这是一些让您入门的伪代码

csvfiles = glob.glob('/stats/*.stat') 
for filename in csvfiles: 
    reader = csv.reader(open(filename)) 
    counter = 0 
    temp1 = [] 
    temp2 = [] 
    for row in reader: 
            col0, col3, col4, col5, col23, col24, col25 = float(row[0]), float(row[3]), float(row[4]), float(row[5]), float(row[23]), float(row[24]), float(row[25]) 
            if ###YOUR CONDITION IS TRUE 
                counter += 1 
            else 
                counter = 0 
            if col4 >= 9.00 and col5 > 1.00 and counter >= 3: 
                if counter == 3 
                    #PRINT TEMP1 
                    #PRINT TEMP2 
               print("   %.0f   " % col0,'|', "%.12f" % col4, "%.12f" % col5, "%.12f" % (col4/col5), "%.12f" % (100*col25), "%.12f" % col3, "%.12f" % col23, "%.12f" % col24) 
            elif counter == 1 
                #store in temp1 
            elif counter == 2 
                #store in temp2 

计数器记录有多少行符合要求。如果它命中三,则打印前两行并打印当前行。三之后,它只打印当前行。如果条件为假,计数器将设置回 0,并且在再次达到 3 之前不会打印任何内容。