【问题标题】:filter file by rows with python使用python按行过滤文件
【发布时间】:2018-11-26 03:52:58
【问题描述】:

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

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)

【问题讨论】:

  • 您可以添加您的初始尝试吗?所以人们可以看到出了什么问题,而不是为你解决问题。 SO 的习惯是展示你的努力。
  • 您可以考虑使用 pandas 模块并将文件加载为 csv(带有空格分隔符)。然后,您只需要应用与您的需求相对应的过滤器。
  • 您好,我尝试使用 pandas 进行操作但没有成功,我将数据更改为 .csv 文件并执行以下操作:

标签: python filter


【解决方案1】:

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

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

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

【讨论】:

  • 我的建议没有奏效吗?如果是这样,它在哪里失败了?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-07
相关资源
最近更新 更多