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