正在读取 XML 文件并留下可能的新行

Reading XML file leaving possible new lines

我正在使用 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>

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

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

您应该能够使用 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() 将 return 为空字符串,您的 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:
        .
        .
        .