gpt4 book ai didi

python - 提取值并构建新文件

转载 作者:行者123 更新时间:2023-12-01 04:50:42 25 4
gpt4 key购买 nike

我有“vtu”格式文件(用于 paraview)作为文本。格式如下:

<?xml version="1.0"?>
<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian" >
<UnstructuredGrid>
<Piece NumberOfPoints="21" NumberOfCells="20" >
<Points>
<DataArray type="Float64" Name="coordinates" NumberOfComponents="3" format="ascii" >
-3.3333333333e-01 1.1111111111e-01 0.0000000000e+00
-2.7777777778e-01 1.1111111111e-01 0.0000000000e+00
-1.1111111111e-01 4.4444444445e-01 0.0000000000e+00
</DataArray>
</Points>
<Cells>
<DataArray type="UInt64" Name="connectivity" NumberOfComponents="1" format="ascii" >
0 1
2 3
5 4

它代表一个网格文件。我想提取 NumberOfPoints 的值以及前两个坐标并将它们存储在另一个文件中,如下所示:

21
-3.3333333333e-01
1.1111111111e-01
-2.7777777778e-01
1.1111111111e-01
-1.1111111111e-01
4.4444444445e-01

我不熟悉python,我只能逐行读取文件,但我不知道如何构造上面的文件。

到目前为止我学到的东西非常简单。对于第一个文件,我能够检测到 NumberOfPoints 包含在

import xml.etree.ElementTree as ET
tree = ET.parse('read.vtu')
root = tree.getroot()

for Piece in root.iter('Piece'):
print Piece.attrib
nr = Piece.get('NumberOfPoints')
print nr

我可以,我有 21 :) 下一步是添加坐标。但我不知道如何解析它们,因为我找不到连接到它们的任何节点。

最佳答案

试试这个:

import xml.etree.ElementTree as ET
try:
from cStringIO import StringIO
except:
from StringIO import StringIO

o = file('out.txt', 'w')

tree = ET.parse('read.vtu')
root = tree.getroot()

for Piece in root.iter('Piece'):
nr = Piece.get('NumberOfPoints')
o.write(nr+ '\n')

piece = root.iter('Piece')
piece = piece.next()
point = piece.getchildren()[0]
dataArr = point.getchildren()
data = dataArr[0]

# Writing to a buffer
output = StringIO()
output.write(data.text)

# Retrieve the value written
crds = output.seek(1)

for l in output:
ls = l.split( );
o.write(ls[0]+ '\n')
o.write(ls[1]+ '\n')

output.close()
o.close()

关于python - 提取值并构建新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28571685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com