使用python按行过滤文件

时间:2018-11-25 19:26:56

标签: python filter

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

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)

1 个答案:

答案 0 :(得分:0)

让我们弄清楚一些事情:

  • 我看不到您的示例中的任何一行都可以通过三个过滤器的解释。
  • 尝试将行强制转换为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)

同样,这不会在您的示例中显示任何内容,但是主意应该很清楚。如果没有,请在评论中提出,如果需要,我会澄清。
祝你好运!