如何编辑此文件?

时间:2020-03-15 10:57:39

标签: python xml

我有一个数据文件,它是一个.MET文件,它是GPS测量工具提供的文件。可以在记事本等中打开它,看起来像这样。

<VERSIE>1.0</VERSIE>
<REEKS>NAME</REEKS>
<PROFILE>profilename, profilename,date,#,NAP,ABS,#,XY,x,y
<MEASUREMENT>#,#,x,y,z,z</MEASUREMENT>
<MEASUREMENT>#,#,x,y,z,z</MEASUREMENT>
<MEASUREMENT>#,#,x,y,z,z</MEASUREMENT>
...
<MEASUREMENT>#,#,x,y,z,z</MEASUREMENT>
</PROFILE>
<PROFILE>
...
</PROFILE>

在整个配置文件的测量中,我需要使用所有x和y进行计算。 但是,我不知道如何在python中访问文件。 我的一个朋友建议将其转换为XML。 当我尝试通过xm.etree.Elementree

访问它们时
tree = ET.parse('Data.xml')
root = tree.getroot()
for PROFIEL in root:
    print(MEASUREMENT.tag, MEASUREMENT.attrib)

我可以在excel中将它们转换为.csv / excel文件,但是我宁愿跳过这一部分,因为我想在python中完成整个过程。并确保我可以对几个不同的文件执行此操作。 任何人都有关于如何访问/编辑这些文件的建议?

1 个答案:

答案 0 :(得分:0)

正如 ostergaard 所建议的那样,您需要在所有其他内容中放置一个元素以使XML合法。

最简单的方法可能是使用ET.XML()的{​​{1}}。虽然如果您确实想使用str,则可以将io.StringIO用作类似文件的对象

ET.parse()

输出:

import xml.etree.ElementTree as ET

filename = r"C:\Users\PFeatherbottom\Desktop\measurements.xml" # raw strings are nice
with open(filename) as file:
    root = ET.XML(f"<root>{file.read()}</root>") # and so are f-strings

for profile in root.findall("PROFILE"):
    print("Profile text:", profile.text.strip())
    for measurement in profile.findall("MEASUREMENT"):
        print("Measurement text:", measurement.text)

这是我的Profile text: profilename, profilename,date,#,NAP,ABS,#,XY,x,y Measurement text: #,#,x,y,z,z Measurement text: #,#,x,y,z,z Measurement text: #,#,x,y,z,z Measurement text: #,#,x,y,z,z Profile text: 输入文件,顺便说一句:

measurements.xml