有条件地读取数据

时间:2018-05-19 20:42:42

标签: 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.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']]

寻找更清洁的产品。

1 个答案:

答案 0 :(得分:1)

您的代码中存在以下几个问题:

默认情况下.split()使用空格作为分隔符,要将每行分为左右两行,您需要传递=

您的状况存在逻辑错误,or允许所有内容,因为同时没有任何内容可以'-0.0''0.0'。将其切换为and以使其正常运行,或者为了更好地实现它应该测试col[-1]等于1.0

if col[-1] == '1.0':

为了正确比较您的输入,您应该删除空格,您可以使用列表推导:

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

col如果整行划线,仍会留有空格。

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