【发布时间】:2021-10-02 06:14:25
【问题描述】:
在互联网上多次尝试和研究将列表列表拆分为单独的列表后,我遇到了麻烦。
我有以下File 包含由开始和结束序列分隔的载荷工况。该文件可能有 4 或 n 个载荷工况,具有 10 或 n 个站,因此无论其数量如何,代码都应以相同的方式运行。我的目标是为每个负载情况创建一个 numpy 数组,因此在本例中为 4 个数组。
我首先读取文件并检测开始和结束序列,添加关键字“fin”以了解负载情况的分离。
def read(filename):
with open(filename,'r') as f :
copy = False
L=[]
for line in f:
if line.strip() == "BEGIN":
copy = True
continue
elif line.strip() == "END":
copy = False
L.append(['fin'])
continue
elif copy :
# print([float(i) for i in line.split()])
L.append(line.split())
return(L)
我的问题从这里开始,我找不到一种方法来分离这个大列表 L 以获得 4 个负载案例列表或数组。我通过获取“fin”关键字的索引进行了尝试,但我只能打印负载情况,而不是将它们放在单独的变量中,因为 Python for 循环不允许在每次迭代中动态创建新变量。
index = [i for i, value in enumerate(L) if value == ['fin']]
print(index)
print(L[0:index[0]])
for i in range(len(index)-1):
print(np.array(L[index[i]+1:index[i+1]]))
希望这很清楚,谢谢!
$-Station---$-coord(m)--$Fx---------$Fy---------$Fz---------$Mx---------$My---------$Mz---------$
BEGIN
1.0 1.0 10.0 20.0 30.0 0.0 210.0 -140.0
1.0 2.0 20.0 40.0 60.0 0.0 390.0 -260.0
1.0 3.0 30.0 60.0 90.0 0.0 540.0 -360.0
1.0 4.0 40.0 80.0 120.0 180.0 660.0 -500.0
1.0 5.0 50.0 100.0 150.0 540.0 750.0 -680.0
1.0 6.0 60.0 120.0 180.0 540.0 810.0 -720.0
1.0 7.0 70.0 140.0 210.0 540.0 840.0 -740.0
1.0 8.0 30.0 60.0 90.0 0.0 -90.0 60.0
1.0 9.0 20.0 40.0 60.0 0.0 -90.0 60.0
1.0 10.0 10.0 20.0 30.0 0.0 -60.0 40.0
END
$-Station---$-coord(m)--$Fx---------$Fy---------$Fz---------$Mx---------$My---------$Mz---------$
BEGIN
1.0 1.0 20.0 20.0 30.0 0.0 210.0 -140.0
1.0 2.0 30.0 40.0 60.0 0.0 390.0 -260.0
1.0 3.0 40.0 60.0 90.0 0.0 540.0 -360.0
1.0 4.0 50.0 80.0 120.0 180.0 660.0 -500.0
1.0 5.0 60.0 100.0 150.0 540.0 750.0 -680.0
1.0 6.0 70.0 120.0 180.0 540.0 810.0 -720.0
1.0 7.0 80.0 140.0 210.0 540.0 840.0 -740.0
1.0 8.0 30.0 60.0 90.0 0.0 -90.0 60.0
1.0 9.0 20.0 40.0 60.0 0.0 -90.0 60.0
1.0 10.0 10.0 20.0 30.0 0.0 -60.0 40.0
END
$-Station---$-coord(m)--$Fx---------$Fy---------$Fz---------$Mx---------$My---------$Mz---------$
BEGIN
1.0 1.0 30.0 20.0 30.0 0.0 210.0 -140.0
1.0 2.0 40.0 40.0 60.0 0.0 390.0 -260.0
1.0 3.0 50.0 60.0 90.0 0.0 540.0 -360.0
1.0 4.0 60.0 80.0 120.0 180.0 660.0 -500.0
1.0 5.0 70.0 100.0 150.0 540.0 750.0 -680.0
1.0 6.0 80.0 120.0 180.0 540.0 810.0 -720.0
1.0 7.0 90.0 140.0 210.0 540.0 840.0 -740.0
1.0 8.0 30.0 60.0 90.0 0.0 -90.0 60.0
1.0 9.0 20.0 40.0 60.0 0.0 -90.0 60.0
1.0 10.0 10.0 20.0 30.0 0.0 -60.0 40.0
END
$-Station---$-coord(m)--$Fx---------$Fy---------$Fz---------$Mx---------$My---------$Mz---------$
BEGIN
1.0 1.0 40.0 20.0 30.0 0.0 210.0 -140.0
1.0 2.0 50.0 40.0 60.0 0.0 390.0 -260.0
1.0 3.0 60.0 60.0 90.0 0.0 540.0 -360.0
1.0 4.0 70.0 80.0 120.0 180.0 660.0 -500.0
1.0 5.0 80.0 100.0 150.0 540.0 750.0 -680.0
1.0 6.0 90.0 120.0 180.0 540.0 810.0 -720.0
1.0 7.0 100.0 140.0 210.0 540.0 840.0 -740.0
1.0 8.0 30.0 60.0 90.0 0.0 -90.0 60.0
1.0 9.0 20.0 40.0 60.0 0.0 -90.0 60.0
1.0 10.0 10.0 20.0 30.0 0.0 -60.0 40.0
END
【问题讨论】:
-
请将内容粘贴到这里
-
你的意思是代码?
-
@Damelko 他的意思是文件中的数据
-
我不清楚您所说的“4 或 n 个载荷工况,有 10 个或 n 个站点”是什么意思。