MacのClipyをCSV形式で保存する【Python】

2020/05/18

【Mac】 【Python】

t f B! P L

やりたいこと

便利なクリップボードの拡張機能「Clipy」の内容をCSVで出力します。

流れ

  • Clipyからxmlファイルを出力
  • xmlファイルをPythonに読み込ませる
  • xmlを辞書形式に変換
  • 辞書から要素を取り出し、pandasのDataFrameに格納
  • DataFrameを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
    の順で出力できます。


    記事の感想をリアクションでお願いします!

    QooQ