我正在使用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","")
,但都没有解决我的问题。有没有人知道解决这个问题?
答案 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:
.
.
.