現在python勉強中です。
最終目標は機械学習がやりたい訳なのですが、機械学習系のスクリプトってpythonが使われる事が圧倒的に多いですよね。
なので、この機会にpython書けるようになりたいなと思い、簡単なプログラムを書いてみる活動を始めました。
使わせていただいたデータはこちらのポケモンのjsonデータ。
その中でもとりあえず最初は少ないデータからと思い、types.json
を使いました。
types.json
をコピーしてローカルに保存します。
今回は、poke_type.json
という名前で保存しました。
書いたスクリプトはこちら。
import json # ファイルを開く json_open = open('poke_type.json', 'r') # 開いたファイルをJsonとして読み込む json_load = json.load(json_open) # 確認 print(json_load)
これを実行するとエラーになってしまいました。
UnicodeDecodeError: 'cp932' codec can't decode byte 0x83 in position 81: illegal multibyte sequence
ファイルをUTF8にしていてもWindowsを使っていると勝手にcp932にエンコードされるようです。
なので、スクリプトの7行目を以下のように修正しました。
import json # ファイルを開く json_open = open('poke_type.json', 'r',encoding="utf-8") # 開いたファイルをJsonとして読み込む json_load = json.load(json_open) # 確認 print(json_load)
BOM付きの場合にはencoding="utf-8_sig"
とする必要があるみたいです。
これで無事にjsonを読み込めたみたいです。
[{'english': 'Normal', 'chinese': '一般', 'japanese': 'ノーマル'}, {'english': 'Fighting', 'chinese': '格斗', 'japanese': 'かくとう'}, {'english': 'Flying', 'chinese': '飞行', 'japanese': 'ひこう'}, {'english': 'Poison', 'chinese': '毒', 'japanese': 'どく'}, {'english': 'Ground', 'chinese': '地上', 'japanese': 'じめん'}, {'english': 'Rock', 'chinese': '岩石', 'japanese': 'いわ'}, {'english': 'Bug', 'chinese': '虫', 'japanese': 'むし'}, {'english': 'Ghost', 'chinese': '幽灵', 'japanese': 'ゴースト'}, {'english': 'Steel', 'chinese': '钢', 'japanese': 'はがね'}, {'english': 'Fire', 'chinese': '炎', 'japanese': 'ほのお'}, {'english': 'Water', 'chinese': '水', 'japanese': 'みず'}, {'english': 'Grass', 'chinese': '草', 'japanese': 'くさ'}, {'english': 'Electric', 'chinese': '电', 'japanese': 'でんき'}, {'english': 'Psychic', 'chinese': '超能', 'japanese': 'エスパー'}, {'english': 'Ice', 'chinese': '冰', 'japanese': 'こおり'}, {'english': 'Dragon', 'chinese': '龙', 'japanese': 'ドラゴン'}, {'english': 'Dark', 'chinese': '恶', 'japanese': 'あく'}, {'english': 'Fairy', 'chinese': '妖精', 'japanese': 'フェアリー'}]
参考: