读取XML文件,留下可能的新行

时间:2015-08-21 10:47:29

标签: python xml csv python-3.x elementtree

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

然后我遍历savedParameters并将它们写入csv文件。除了在一种情况下,这一切都很好,以下面的xml为例。

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

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

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

1 个答案:

答案 0 :(得分:1)

您应该能够使用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:
        .
        .
        .