读取XML文件时可能会留下新行

2024-06-01 03:26:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用ElementTree读取一个.xml文件,并将输出保存到一个.csv文件中。我遍历xml文件中的所有行,并将名称和文本对保存在一个列表中。你知道吗

savedParameters = []

tree = ET.parse(work_dir + input_name)
root = tree.getroot()

for child in root:
    savedParameters.append({'parameterName' : child.tag, 'Value' : child.text})
    for gchild in child:
        savedParameters.append({'parameterName' : gchild.tag, 'Value' : gchild.text})
        for ggchild in gchild:
        .
        .
        .

然后循环保存的参数并将它们写入csv文件。这一切都可以正常工作,除了在一种情况下,以下面的xml为例。你知道吗

<VehicleId>123456789</VehicleId>
-<VRMs>
    <ForAppointment>X111XXX</ForAppointment>
    <Alternate>X111XXX</Alternate>
</VRMs>
<Vin>123456</Vin>

在这种情况下,除了字段外,所有内容都将按预期存储。但是,当我访问子.text()它存储一个带有新行的空字符串,即-<VRMs></VRMs>之间的所有空格。因此,当我写到csv时,它会写出新行。你知道吗

我试过replace(" ", "")replace("\n",""),但都没有解决我的问题。有人知道怎么解决这个问题吗?你知道吗


Tags: 文件csvtextinchildtreefortag
1条回答
网友
1楼 · 发布于 2024-06-01 03:26:55

您应该能够使用str.strip()(不提供任何参数)去掉换行符(从字符串的开头和结尾)。你知道吗

示例-

>>> s = "\n    \n asd \n    \n \n \n\n    "
>>> s.strip()
'asd'
>>> s = "\n    \n \n    \n \n \n\n    "
>>> s.strip()
''

如上图所示,str.strip()将返回空字符串,如果字符串只包含空格,您的child.text就是这种情况。因此,在您尝试将其存储在字典中之前,您应该能够执行-child.text.strip()。示例-

for child in root:
    savedParameters.append({'parameterName' : child.tag, 'Value' : child.text.strip()})
    for gchild in child:
        savedParameters.append({'parameterName' : gchild.tag, 'Value' : gchild.text.strip()})
        for ggchild in gchild:
        .
        .
        .

相关问题 更多 >