将XML标记写入CSV,无论是否存在另一个使用的标记

时间:2016-09-27 16:08:10

标签: python xml csv

我有一个包含单词和单词定义的XML文件。有些单词连接到带有定义的基本单词(例如“ahh”是基本单词,“ahhed”是没有定义标记的变形)。

以下是我正在解析的XML的pastebin示例:http://pastebin.com/H3TG0Kaq

我目前的代码目前如下:

from xml.dom.minidom import parse
import csv

def writeToCSV(myWords):
    csvfile = open(r'xmlfile', 'w', encoding='utf-8')
    fieldnames = ['hw', 'def']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()

    entries = myWords.getElementsByTagName("superentry")
    for entry in entries:
        try:
            word = entry.getElementsByTagName("hw")[0].childNodes[0].data
        except AttributeError:
            print(entry, entry.firstChild)
        for definition in entry.getElementsByTagName("def"):
            try:
                defValue = definition.childNodes[0].data
            except AttributeError:
                print(definition, definition.firstChild)
            writer.writerow({'hw': word, 'def': defValue})

doc = parse(r'outputfile')
myWords = doc.getElementsByTagName("dps-data")[0]

# Get get each word entry
books = myWords.getElementsByTagName("superentry")

# Print each word
writeToCSV(myWords)

此脚本允许我从XML文件中显示<hw>(单词)和<def>(定义),但它不会打印出<hw>标签。没有定义,只是跳过它们。

即使<def>标记不存在,有没有办法打印标记数据?

我还想弄清楚如何打印出那些没有定义的变形词的“基础”词(<xrhw>aah</xrhw>标签)

0 个答案:

没有答案