やりたいこと
便利なクリップボードの拡張機能「Clipy」の内容をCSVで出力します。
流れ
実際の手順
Clipyからxmlファイルを出力
Clipy > スニペットを編集 > エクスポート
を選択します。
xmlファイル
出力したxmlファイルを見てみます。
PythonでCSVに変換
import xmltodict
import pandas as pd
def xml2csv(file, csv):
with open(file) as fd:
doc = xmltodict.parse(fd.read())
for folder in doc["folders"]["folder"]:
folder_title = folder["title"]
for snippet_ in folder["snippets"]["snippet"]:
try:
title = snippet_["title"]
snippet = snippet_["content"]
except: # フォルダにsnippetがひとつだけのとき
snippet_ = folder["snippets"]["snippet"]
title = snippet_["title"]
snippet = snippet_["content"]
list_xml.append([folder_title, title, snippet])
df = pd.DataFrame(list_xml, columns=["folder", "title", "text"])
df.to_csv(csv)
xml2csv("snippets_200518.xml", "clipy_200518.csv")
こちらの関数でxmlからcsvまで変換できます。
XMLから直接dataframeに変換、と考えていましたが、どうも難しそうなので、
- まず辞書に変換
- ほしい要素をkeyで取り出していく
という方針で書いてみました。
できあがり
folder, title, text
の順で出力できます。
記事の感想をリアクションでお願いします!