13章「特定のデータフォーマット」の対策ポイントと例題
13章「特定のデータフォーマットを扱う」からは本番40問中2問が出ます。CSV・JSON・設定ファイルの読み書きを問う章です。
- csv
- json
- configparser
- pickle
- YAML
この章の出題数と位置づけ
13章「特定のデータフォーマット」からは本番40問のうち2問が出題されます。 全体に占める割合は5.0%で、15章中6番目タイの出題数です(同じ2問の章が他に7章あります)。 合格に必要なのは28問正解(12問まで不正解可)なので、 この章の2問をどこまで取りに行くかは、他の章との兼ね合いで決めるのが現実的です。
対策のポイント
- json.dumps / loads(文字列相手)と json.dump / load(ファイル相手)の s の有無を取り違えないことです。
- ensure_ascii=False を付けないと日本語が \uXXXX 形式になる、という具体的な挙動が問われます。
- csv.reader と csv.DictReader の戻り値の違い、open() に newline='' を渡す理由を押さえます。
- pickle は Python 固有の形式で、信頼できないデータを読み込んではいけないという注意点も範囲です。
この章の例題(3問)
当サイトで実際に出題している問題から3問を、正解と解説つきで掲載します。 すべて自作のオリジナル問題で、実際の試験問題ではありません。
例題1. json.dumps() で日本語をエスケープせずそのまま出力したい。指定する引数はどれか。
- 正解ensure_ascii=False
- encoding="utf-8"
- indent=4
- sort_keys=True
解説: 既定の ensure_ascii=True では \uXXXX にエスケープされる。dumps に encoding 引数は存在しない。indent は整形、sort_keys はキー順の並び替えで、いずれも文字のエスケープには関係しない。
例題2. csv.writer を使って書き込む際、ファイルを open するときに指定すべき引数はどれか。
- 正解newline=""
- encoding=None
- mode="rb"
- buffering=0
解説: newline="" を付けないと、環境によって行末が二重になって空行が混ざる。csv モジュールを使うときの定型。
例題3. 実行結果として正しいものを選べ。
import json
print(type(json.dumps({"id": 1, "name": "tanaka"})))
- 正解<class 'str'>
- <class 'dict'>
- <class 'bytes'>
- <class 'json'>
解説: dumps は辞書などを JSON 形式の文字列に変換する。見た目が辞書に似ていても型は str。逆向きの loads は文字列を Python のオブジェクトに戻す。
この章は当サイトに全6問を収録しています。残りはドリルの「章別に解く」から解けます。