簡體   English   中英

讀取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:
        .
        .
        .

然后,我遍歷savevedParameters並將它們寫入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()換行符(從字符串的開頭和結尾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:
        .
        .
        .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM