我有一个列表,我想将存在于 top_row 和 bottom_row 之间的数据提取到另一个列表。 我知道 top_row 并且 bottom_row 对应于数据 [0] = 最后一个整数数据(下一行由字符串组成,但也有一些我不感兴趣的整数行)。
我试过很多东西,但都没有成功:
for row,data in enumerate(fileData):
if row > row_elements: #top_row
try:
n = int(data[0])
aux = True
except:
n = 0
while aux: #until it finds the bottom_row
elements.append(data)
问题是它永远不会迭代第二行,如果我将 while 替换为 if 我得到第一列是整数的所有行。
文件数据是这样的:
*Element, type=B31H
1, 1, 2
2, 2, 3
.
.
.
359, 374, 375
360, 375, 376
*Elset, elset=PART-1-1_LEDGER-1-LIN-1-2-RAD-2__PICKEDSET2, generate
我只对第一列值等于 1 到 360 的行感兴趣。
非常感谢!
请您参考如下方法:
您发布的代码令人困惑。例如,“aux”是一个命名不当的变量。循环确实想从输入的特定元素开始,但它遍历所有内容,直到找到它想要的迭代,将可能是恒定时间的操作变成线性操作。让我们尝试重写它:
for record in fileData[row_elements:]: # skip first row_elements (might need +1?)
try:
int(record[0])
except ValueError:
break # found bottow_row, stop iterating
elements.append(record)
