首页 > 解决方案 > 使用python按行过滤文件

问题描述

我有一个包含几列的文件:

1.000       2.0072      1.000       3.5368      1.000       3.7748
2.000       2.0890      2.000       3.5867      2.000       3.7302
3.000       2.0784      3.000       3.3057      3.000       3.6899

我需要以这样一种方式过滤它,即我只选择满足每列特定条件的行,例如只选择以下行:

C1 < 1
C2 > 2
C3 == 3

总共有 5 列,我只需要过滤满足示例的三个条件的行。我提出了类似的问题,但当时我过滤了所有数据:

k = open ("test.txt", "r")

lines = k.readlines ()
     for line in lines:
        conv_int = int (lines):
         if lines> 1:
             print (conv_int)

标签: pythonfilter

解决方案


让我们把一些事情弄清楚:

  • 我没有看到您示例中的任何行都会通过三个过滤器的解释。
  • 由于四舍五入的效果,尝试将线条转换为int不会按照您编写的方式工作,并且无论如何都不一定是一个好主意。

但是通过添加一些猜测工作,您可以根据您的需要调整以下内容,希望能够获得原则并为您解决更一般的情况:

k = open ("test.txt", "r")
lines = k.readlines()
for line in lines:
    nums_list = [float(x) for x in line.strip().split(' ') if x != '']
    if nums_list[0] < 1 and nums_list[1] > 2 and nums_list[2] == 3:
        print(line)

同样,这不会在您的示例中打印任何内容,但是这个想法应该很清楚。如果没有,请在评论中询问,如果需要,我会澄清。
祝你好运!


推荐阅读