0

Python ElementTree を使用して複数の xml ファイルを解析しようとしています。私のコードの一部は次のとおりです。

dirSelected = tkFileDialog.askdirectory()

# User names the output csv file
csvFile = raw_input('Enter the name for the result csv file ')
csvFile = csvFile + ".csv"
resultCSV = open(csvFile, "w+")

# Formation of a long string that becomes the header of the csv file
resultCSV_header = 'header,' + 'header2,'
print (resultCSV_header, file = resultCSV)  

for root, dirs, files in os.walk(dirSelected):
    for fi in files:
        #parse S1.xml files       
        if (fi.endswith('.xml') and fi.startswith('S')):
            filePath = os.path.join(root, fi)
            #Parse XML directly from the file path
            tree = ET.parse(filePath)
            #Get the root node
            doc = tree.getroot()
            column1 = doc.find('.//TAG1').text
            ...
            resultCSV_recipe = (column1 + "," + column2 + ...)
                print (resultCSV_xml)
                print (resultCSV_xml, file=resultCSV)

私の問題は、複数の *.xml ファイルを解析して、データを *.csv 出力ファイルの 1 行に入れようとしていることです。たとえば、選択したフォルダーに S1.xml、S2.xml、C1.xml、C2.xml があり、S1.xml と C1.xml のデータを出力ファイルの 1 行に配置したいとします。私の出力ファイルは単純な *.csv ファイルで、行と列を自分で定義して Excel で開きたいと考えています。

現在、S1.xml から出力までのすべての TAG を解析でき、正常に動作しますが、選択したフォルダー内のすべてのファイルとディレクトリをウォークスルーして C1.xml を解析しようとすると、for ループで問題が発生し、出力パラメータ。「割り当て前に参照されたローカル変数 'c​​olumn1'」を表示しています。

Python を使用して複数の *.xml ファイルを 1 つのフォルダーに連結することは可能ですか。または、*.xml ファイルを解析するためのより優れた機能があります。ありがとうございます!

4

0 に答える 0