我创建了一个脚本,它以我想要的[3:4:n]格式将一个.txt文件中的大量数据收集到一个数组中,并将信息记录如下(我想)。.txt文件采用这种格式
1.000000e-01 1.000000e-01 1.000000e-01
1.000000e-01 2.000000e-01 3.000000e-01
3.000000e-01 2.000000e-01 1.000000e-01
1.000000e-01 2.000000e-01 4.000000e-01
重复N次,我基本上从4行存储到for行(像一个块),因为我使用的是来自STL部件的ASCII文件
从这个意义上讲,我有以下代码:
f = open("camaSTLfinalmente.txt","r")
b_line = 0
Coord = []
Normal = []
Vertice_coord = []
Tri = []
blook = []
for line in f:
line = line.rstrip()
if(line):
split = line.split()
for axis in range(0,3):
if(b_line == 0): #normal
Normal.append(split[axis])
else: #triangulo
Vertice_coord.append(split[axis])
if(b_line > 0):
Tri.append(Vertice_coord)
Vertice_coord = []
if(b_line == 3):
block.append(Normal)
block.append(Tri)
Coord.append(block)
block = []
Normal = []
Tri = []
b_line = 0
else:
b_line+=1
print(Coord[0]) #prints the follow line that I wrote after the code
信息以以下方式存储: ['100000E-01','100000E-01','100000E-01','100000E-01',['100000E-01','200000E-01','3000E-01','3000E-01','200000E-01','100000E-01','100000E-01','100000E-01','100000E-01','40000E-01']]
有什么办法可以简化它吗
我想借此机会问一下:我想将这些信息转换成数字,理想的做法是读取指数(e)后的数字,并相应地更改数字,即1.000000e-01变为0,1(为了使用类似的数组进行操作,我在其中存储另一个.txt文件中相同格式的信息)
谢谢大家的关注
佩德罗
您可以尝试将行
split = line.split()
更改为:如果需要结果为字符串而不是浮点数据类型:
我不能100%确定我是否完全理解您想要什么,但是下面的代码生成了相同的
Coord
:关于第二个问题,正如另一个答案所述,处理包含数字的字符串的最简单方法是将其转换为数字,然后将其格式化为字符串
请参阅关于string formatting in the Python doc的部分
几句话:
4k
行,如果您的末尾还有一些行没有形成4行的包,则相应地更改整除...//4
李>相关问题 更多 >
编程相关推荐