今回は JSON 形式の文字列を Python で整形して表示する方法をご紹介します。, JSON を格納した文字列が Python コードの中で取得できている場合は、いったん loads() で読み込んだ後に dumps() で再度ダンプし直すと OK です。その際に dumps() のオプション引数 indent を指定することでインデントの大きさを決めることができます。, JSON 文字列がファイルに格納されている場合は、 load() と open() を使用します。, 上のコードの場合は loads() の部分を load() に変えて、引数を文字列からファイルオブジェクトに変更すれば OK です。, Python プログラムの中ではなくターミナル上で処理できればそれで十分な場合は、 json.tool モジュールを使う方法がお手軽でおすすめです。 json.tool は次の形で利用することができます。, python -m json.tool に JSON 文字列を渡す方法には、上の「標準入力で渡す方法」の他に「ファイル名を引数として渡す方法」もあります。, ちなみに、 python -m json.tool のヘルプは次のとおりになっています。, 私は使ったことはありませんが、 dict 型のキーをアルファベット順(辞書順)に並べられる --sort-keys というオプションがあるようです。, シンタックスハイライトを施して JSON を表示する機能は(私が知るかぎり) Python の標準ライブラリには無いので、何らかの非標準のライブラリを使用するか自分で書くかのどちらかになります。おすすめなのは pygments というライブラリを使用する方法です。, シンタックスハイライトなしの場合と同様に JSON が Python コード内で文字列として取得できている場合から見ていきましょう。, pygments.highlight() 関数にコードの文字列を渡すと、シンタックスハイライトを施した形で文字列を返してくれるので、それを利用します。, このコードの出力は次のとおりとなります。ターミナル上ではきれいにハイライトが行われて表示されます。, 出力をブラウザで利用したい場合等は、 TerminalFormatter の代わりに HtmlFormatter を利用することが利用できます。, JSON がファイルに格納されている場合は、もしターミナル上で扱えればよいだけであれば、 pygments が提供するコマンドラインツール pygmentize を使う方法がシンプルでおすすめです。, 改行やインデントを保ったままハイライトだけができればよいのであれば、 pygmentize コマンドをそのまま使用すれば OK です。, ファイルの拡張子が json の場合は自動で JSON と認識してくれるようです。拡張子が json 以外の場合は -l (--lexer) オプションでフォーマットが JSON であることを伝えれば OK です。, 改行やインデントをよきように調整してなおかつハイライトしてほしい場合は、標準ライブラリ json と組み合わせて使うとよいかと思います。 pygmentize コマンドも、対象のファイルが指定されなければ代わりに標準入力の文字列を処理してくれます。, ヘルプドキュメントの分量が多いのでここには掲載しませんが、 pygmentize には豊富なオプションがあるので、使ってみたい方は一度確認してから使ってみることをおすすめします。, 後藤隼人 (ごとうはやと)おかげさまで元気にやっています。GitHub / 別ブログ / 仕事, '{"_meta": {"hash": {"sha256": "hash"}, "pipfile-spec": 6, "requires": {"python_version": "3.6"}, "sources": [{"name": "pypi", "url": "https://pypi.python.org/simple", "verify_ssl": true } ] } }'. 整形 - python json tool csv . この記事では、CSVファイルを読み込んでJSONに変換する方法をご紹介します。 適当に作った以下のファイルを使います。 hoge.csv [crayon-5faa6376092d0616779815/] csvを読み込み、jsonのフォーマットでダンプし、リストに追記していく流れです。 csv_to_json.py [crayon-5faa6376092db270883834/] 実行すると以下 Spring/RESTをテストするためのTerminal/CommandlineからCurlでJSONデータをPOSTする方法. (Unix)シェルスクリプトでJSONをきれいに印刷するにはどうすればいいですか? Help us understand the problem. ワンライナーですとこちらのほうが圧倒的に楽できますね。 前回の投稿では『Pythonでpandasを使ってExcelファイルを読み込んでcsvファイルを出力するまで』ということで、Pythonの環境構築からCSV出力までの段取りを書いてみました。, CSV出力ができればデータ分析の現場としてはどうにかなってしまうことが多いといえば多いですが、JSON形式やXML形式でも出力できると色々とやれることの幅が広がります。なので今回の投稿では各データ形式のメリット・デメリットを簡単に比較しつつ、実際にコードを書いて実行するところまでを書いてみたいと思います。, どのデータ形式もデータ活用の現場でバリバリの現役ではありますが、だからこそ、それぞれのデータ形式に適した活用シーンがあります。そのあたりを考慮しつつ、CSV, XML, JSONの順に特徴を見ていきます。(※なお下記特徴は、PythonだけでなくVBAでも処理することを念頭に書いています。), やはりPythonで使うならCSV or JSONの2択ですね。わざわざJSONではなくXMLを使うべきシーンはなかなか思いつきません。とはいえ両方変換できるに越したことはないので、タイトル通りJSONとXMLの両方に変換してみたいと思います。, (※ちなみにCSVの読み込みとJSON処理に使っている『pandas』ライブラリについて知りたい方は Python Data Analysis Library - pandas を、XML処理に使っている『xml.etree.ElementTree』ライブラリについて知りたい方は Python Software Foundationをご覧ください。), JSON出力はpandasの基本機能として提供されているので、圧倒的に楽ですね。一般的なフォーマットはorient="records"だと思いますが、大規模なCSV的データの場合はorient="split"にすることでデータをより軽快に扱うことができると思います。, [{"age":"0~4\u6b73","sex":"total","yyyymm":201905,"value":4810000},{"age":"0~4\u6b73","sex":"male","yyyymm":201905,"value":2470000},{"age":"0~4\u6b73","sex":"female","yyyymm":201905,"value":2350000},{"age":"0~4\u6b73","sex":"total","yyyymm":201812,"value":4827000},{"age":"0~4\u6b73","sex":"male","yyyymm":201812,"value":2473000},{"age":"0~4\u6b73","sex":"female","yyyymm":201812,"value":2354000},{"age":"0~4\u6b73","sex":"total-ja","yyyymm":201812,"value":4750000},{"age":"0~4\u6b73","sex":"male-ja","yyyymm":201812,"value":2433000},{"age":"0~4\u6b73","sex":"female-ja","yyyymm":201812,"value":2317000},{"age":"5~9\u6b73","sex":"total","yyyymm":201905,"value":5130000},{"age":"5~9\u6b73","sex":"male","yyyymm":201905,"value":2630000},{"age":"5~9\u6b73","sex":"female","yyyymm":201905,"value":2500000},{"age":"5~9\u6b73","sex":"total","yyyymm":201812,"value":5172000},{"age":"5~9\u6b73","sex":"male","yyyymm":201812,"value":2648000},{"age":"5~9\u6b73","sex":"female","yyyymm":201812,"value":2524000}, ...中略...}, {"columns":["age","sex","yyyymm","value"],"index":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188],"data":[["0~4\u6b73","total",201905,4810000],["0~4\u6b73","male",201905,2470000],["0~4\u6b73","female",201905,2350000],["0~4\u6b73","total",201812,4827000],["0~4\u6b73","male",201812,2473000],["0~4\u6b73","female",201812,2354000],["0~4\u6b73","total-ja",201812,4750000],["0~4\u6b73","male-ja",201812,2433000],["0~4\u6b73","female-ja",201812,2317000],["5~9\u6b73","total",201905,5130000],["5~9\u6b73","male",201905,2630000],["5~9\u6b73","female",201905,2500000],["5~9\u6b73","total",201812,5172000],["5~9\u6b73","male",201812,2648000],["5~9\u6b73","female",201812,2524000], ...中略...}, という構造の違いがあります。なおファイル容量はrecordsが12.7KB、splitが8.09KBとなり、splitにすることで約3分の2に減りました。もちろんフォーマットが異なるので処理する際のコードも異なるわけですが、データ容量が大きくなればなるほどこの恩恵は大きくなりますね。, さて、続いてXML出力です。私が知る限り、pandasのDataFrameを即座にXML出力する関数は存在しないので、実際にXMLのツリー構造を作ってからファイルとして出力する必要があります。ElementTreeを使えば直感的にツリー構造を作ることはできますが、まあ何も考えずにできるJSONと比べれば少し面倒な気はします。, なお上のコードでは、JSON形式で言うところのrecordsフォーマットをイメージしてツリー構造を作りました。出力時にはunicode指定して、日本語文字を日本語に変換しての出力なので、少し読みやすいです。ちなみに出力された実際のデータを見ると、,
オープンチャット アナウンス やり方 5, ポケモン 色違い おすすめ 8, 毎日のドリル 作文 1年生 5, Too To 構文 書き換え 6, Tinder Line交換後 マッチ解除 16, 足場 見積書 書き方 24, 血界戦線 7巻 感想 5, 猫 尿が出ない 応急処置 15, Onkyo リモコン 分解 10, Autocad 建具 記号 12, Fire Hd 勝手に つく 9, 20代 喪服 しまむら 13, レンジフード ファン Zrs90aar11fsl 4, いただきストリート Ps4 つまらない 55, 直列回路 並列回路 抵抗 22, 3年a組 1話 無料 9, 500系 V6編成 故障 34, Twice ペンライト 高い 4, ゴルフ 7 ハイ ライン ポジション 6, Lonely Screen Free 4, Wiiu カラオケ 無料開放デー 2020 5月 10, 黒い砂漠 Ps4 問い合わせ 6, ムロツヨシ 本名 数 4, Teams 発表者 画面 4, 竜舞 バンギラス 素早さ 6, Gta5 銃器密造 ソロ 8, Defi Stepmaster Vs 2 5, ダッチオーブン 吊るす 自作 7, 二階堂 Cm曲 2020 歌手 9, Zoom マイク発見失敗 Pc 5, 弱虫ペダル 田所 映画 4, 新八 2年後 強さ 12, メタルギア ストーリー 解説 7, 猫 皮下点滴 量 5, Lol ピン 設定 5, カムリ フォグランプ 交換方法 10, Wanderin' Destiny 歌詞 和訳 13, 東進 講師 不仲 7, Ps Now 8月 5, 自由 歌詞 仏師 5,