Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有条件地读取数据_Python - Fatal编程技术网

Python 有条件地读取数据

Python 有条件地读取数据,python,Python,我的文本数据文件如下所示。我希望有条件地读取这些数据,并将其存储在一个列表中,这样,如果右侧等于1,我希望将该行添加到列表中 [ 1, 5, 2] = -0.0 [ 1, 5, 3] = -0.0 [ 1, 5, 4] = -0.0 [ 1, 5, 6] = -0.0 [ 1, 5, 7] = 1.0 [ 1, 5, 8] = -0.0 [ 2,10] = 0.0 [ 2,11] = 1.0 [ 3, 2] = 1.0 [ 3, 4] = -0.0 [ 3, 5] = -0

我的文本数据文件如下所示。我希望有条件地读取这些数据,并将其存储在一个列表中,这样,如果右侧等于1,我希望将该行添加到列表中

 [ 1, 5, 2] = -0.0
 [ 1, 5, 3] = -0.0
 [ 1, 5, 4] = -0.0
 [ 1, 5, 6] = -0.0
 [ 1, 5, 7] = 1.0
 [ 1, 5, 8] = -0.0
 [ 2,10] = 0.0
 [ 2,11] = 1.0
 [ 3, 2] = 1.0
 [ 3, 4] = -0.0
 [ 3, 5] = -0.0
 [ 3, 6] = -0.0
 [ 3, 7] = -0.0
我尝试使用下面的代码,但它不起作用。请把我引向正确的方向

with open("t.txt", "r") as ins:
    array = []
    for line in ins:
        col=line.split()
        if col[-1]!= '-0.0' or col[-1]!= '0.0':
            array.append(col)
编辑:我将代码更改为:

with open("t.txt", "r") as ins:
    array = []
    for line in ins:
        col=line.split()
        if col[-1]!= '-0.0': 
            if col[-1]!= '0.0':
                array.append(col)
现在我得到的结果是:

[['y:', '3', 'dimensions,', '657', 'entries:'],
 ['[', '1,', '5,', '7]', '=', '1.0'],
 ['[', '2,', '9,11]', '=', '1.0'],
 ['[', '3,', '6,', '2]', '=', '0.9999999999999876'],
 ['[', '6,', '8,', '3]', '=', '-1.2545520178264269e-14'],
 ['[', '7,', '4,', '3]', '=', '1.0'],
 ['[10,', '9,11]', '=', '-0.0x:', '2', 'dimensions,', '91', 'entries:'],
 ['[', '1,', '8]', '=', '1.0'],
 ['[', '2,11]', '=', '1.0'],
 ['[', '3,', '2]', '=', '1.0'],
 ['[', '7,', '3]', '=', '1.0'],
 ['[', '8,10]', '=', '1.0'],
 ['[10,', '7]', '=', '1.0']]

正在寻找更干净的输出。

您的代码中有几个问题:

默认情况下,split使用空格作为定界符,要将每一行拆分为左行和右行,需要传递=

您的条件中存在逻辑错误,或者允许所有内容进入,因为任何内容都不能同时为“-0.0”和“0.0”。将其切换到,并使其功能化,或使其在现实中更好,应测试col[-1]是否等于1.0:

如果列[-1]=“1.0”:

为了正确比较您的输入,您应该去掉空白,您可以使用列表理解:

col=[n.strip for n in line.split'=']

如果将行作为一个整体进行条带化,col仍将保留空白


希望这会让你回到正确的轨道上。

array=[line-for-line-in-if-lines.rstrip.endswith'1.0']应该可以做到。为什么不起作用?会发生什么?然而,你用文字写的条件听起来更像if intcol[-1]==1:我在R.H.S上有两个以上的条件,这就是我使用不等号的原因。