さて、本日はPython で XML を CSV に変換する方法について書いてみようと思います。前回のエントリーでは Python で CSV を XML に変換する方法について書きましたが、今回はその逆ですね。
使用する XML
前回のエントリーで作成した prefectures.xml を使用します。興味のある方はぜひ前回のエントリーを読んでみてください。
出力する CSV
以下のような形で CSV を出力しようと思います。
実行環境
Windows 10 64bit
Python 3.6.6
サンプルコード
prefectures.xml を CSV に変換するサンプルです。
# -*- coding: utf-8 -*- import csv from xml.etree import ElementTree def xml2csv(): input_file = r"D:\data\csv\prefectures_from_xml.csv" output_file = r"D:\data\csv\prefectures.xml" # CSV 作成 f = open(input_file, "w") # ヘッダー output_string = "公表年,公表月,公表日,都道府県,患者数(2020年3月28日からは感染者数),現在は入院等,退院者,死亡者\n" # ヘッダー書き込み f.write(output_string) # XML 読込 tree = ElementTree.parse(output_file) # ルート root = tree.getroot() text_list = [] for r in root: if r.tag == "date": text_list.append(r.find('year').text) text_list.append(r.find('month').text) text_list.append(r.find('day').text) elif r.tag == "prefecture": text_list.append(r.text) elif r.tag == "info": text_list.append(r.find('cases').text) text_list.append(r.find('hospitalized').text) text_list.append(r.find('released').text) text_list.append(r.find('death').text) if len(text_list) == 8: # CSV に書き込み output_string = text_list[0] \ + "," + text_list[1] \ + "," + text_list[2] \ + "," + text_list[3] \ + "," + text_list[4] \ + "," + text_list[5] \ + "," + text_list[6] \ + "," + text_list[7] + "\n" f.write(output_string) # リストをクリア text_list = [] f.close if __name__ == '__main__': xml2csv()
結果
想定通りの形で CSV が出力されました。
さいごに
今回はさくっと終わらせることができました。前回のエントリーで CSV→XML、今回のエントリーでXML→CSV に変換する方法を紹介しました。これで相互変換が必要になっても大丈夫かと思います。前回も使用しましたが、今回も ElementTree を使用しています。Python で XML を扱う際はよく使用するライブラリかと思いますので、ぜひ色々使ってみてください。今回は以上です。