Python 有条件地读取数据
我的文本数据文件如下所示。我希望有条件地读取这些数据,并将其存储在一个列表中,这样,如果右侧等于1,我希望将该行添加到列表中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, 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上有两个以上的条件,这就是我使用不等号的原因。