我的文本数据文件如下所示。我想有条件地读取这些数据并存储在列表中,如果右侧等于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']]
寻找更清洁的产品。
答案 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
如果整行划线,仍会留有空格。
希望这会让你回到正确的轨道上。