Python 3でUTF-8テキストをUTF-8としてjson.dumpsで保存する方法
Python 3のjsonモジュールを使用してUTF-8エンコードされたテキストを\uエスケープシーケンスではなくUTF-8として保存する方法について説明します。JSON形式のデータを処理する際に、UTF-8エンコードされたテキストをそのまま保持したい場合に役立ちます。
関連する知識
Pythonのjson.dumps()関数は、デフォルトでASCIIエンコードを使用して文字列をエンコードします。しかし、ensure_ascii=Falseと指定することで、UTF-8エンコードを有効にすることができます。
明確な例
import json data = {"message": "こんにちは、世界!"} json_data = json.dumps(data, ensure_ascii=False) print(json_data)
この例では、data内の日本語のメッセージがUTF-8としてエンコードされ、\uエスケープシーケンスではなくそのまま表示されます。
結果
{"message": "こんにちは、世界!"}
別の例
以下に、リスト内に日本語文字列を含むデータをUTF-8として保存する例を示します。
import json data = {"messages": ["おはよう", "こんにちは", "こんばんは"]} json_data = json.dumps(data, ensure_ascii=False) print(json_data)
結果
{"messages": ["おはよう", "こんにちは", "こんばんは"]}
このように、ensure_ascii=Falseを指定することで、UTF-8エンコードされたテキストをJSON形式でそのまま保存することができます。
Python 3では、UTF-8エンコーディングを使用してテキストを処理する際に、\uエスケープシーケンスではなくUTF-8として保存する方法があります。これを実現するためには、json.dumps()メソッドを使用します。
通常、Pythonでは文字列をJSON形式に変換する際に、特殊文字や非ASCII文字を\uエスケープシーケンスで表現します。しかし、UTF-8エンコーディングを使用している場合、これらの文字をそのままUTF-8として保存したい場合があります。
json.dumps()メソッドを使用すると、デフォルトではASCIIエンコーディングが適用され、非ASCII文字は\uエスケープシーケンスでエンコードされます。しかし、ensure_ascii=Falseを指定することで、UTF-8として保存することが可能です。
例えば、以下のようにjson.dumps()メソッドを使用して、UTF-8エンコーディングでテキストを保存することができます。
import json
data = {“key”: “日本語のテキスト”}
# UTF-8として保存
json_data = json.dumps(data, ensure_ascii=False)print(json_data)