読者です 読者をやめる 読者になる 読者になる

ろむめも

気になったこととか、調べたことをゆるくまとめます。主にプログラミング関連の話題が多いです。

python pandasでjson出力する時に文字コードが上手くいかない場合

環境

現象

df = DataFrame(***)
ret = df.to_json()
print(ret)

で、日本語を含む場合に、よくある「\u65e5\u672c\u8a9e」こういうのが出る

対策

df = DataFrame(***)
ret = df.to_json(force_ascii=True)
print(ret)

とすると日本語が正しく表示される。

ちなみに

df = DataFrame(***)
ret = df.to_json(orient="records")
print(ret)

じゃないと同じデータがあるとか言われてエラーが出る。
ググったら出力の形式というか、データ構造を指定するオプションのようでした。

pycharm ver4.5.0でPy_Initializeエラー

現象

愛用しているpycharmのバージョンを4.3?から4.5にアップデートしたところ、以下のエラーが出力され、pythonコードがrunできなくなりました。

C:\Python34\python.exe D:/test/test.py
Fatal Python error: Py_Initialize: can't initialize sys standard streams
LookupError: unknown encoding: windows-31j

Process finished with exit code 3

環境

対応

pythonを再インストールしたり、pycharmを再インストールしたり色々やったが、なかなか改善しなかったので、意を決してサポートに問い合わせました。
メールから5分程度で担当者から連絡が来て(早い!)、以下の対応で解消するか確認してほしいとの事でした。
(そして、言うとおりにやったら解消しました)

  1. pycharmをver4.5.1にアップデート
  2. Setting|Editor|File EncodingからIDE EncodingとProject Encodingを正常値に戻す

私の環境ではどちらもUTF-8にしました。

所感

こういうツール系の不可解な障害を良く引いてしまう私としては、サポートに聞けるのは良いですね。
あと、(簡単な既知の問題だったのかもしれませんが)サポートの回答が本当に早くて驚きました。
サポートセンターどこにあるのかとか、どういうシフトになっているのかなと思って、開発元のJetbrains社について調べたら、ロシアとアメリカとドイツに拠点を持っているとの事。

ジェットブレインズ - Wikipedia

それら拠点の時差が、例えば8h毎なら、変則的な夜勤とか無く24hサービスセンター営業できるかもとか思ったけど、日本を0とした時に、ロシア、ドイツ、アメリカで(-7, -8, -13)という時差だったのでちょっと違う事がわかりました。
でもグローバル企業ならそういうサービスのやり方をやってるのでしょうかね。

python Tips

参考になるリンクをはりつけるページ

ファイル内の行数をエレガントに数えたい - ごめんなさい

リストのサイズの取得(len関数) - リスト - Python入門

python - Is it possible for a unit test to assert that a method calls sys.exit() - Stack Overflow

要素の確認(in演算子, indexメソッド, countメソッド) - リスト - Python入門

リスト - 作成、取り出し、置換、追加、検索、削除、要素数 - ひきメモ

文字列及び数値を整数に変換(int) - 数値 - Python入門

ショートカット: Python スクリプトで出力している内容が Jenkins の Console にリアルタイムで出力されない。

pycharmでコメントアウト - mild7caloriemategreentea

Pythonで文字列 <-> 日付(date, datetime) の変換 - Qiita