首頁 >後端開發 >Python教學 >如何在 Python 2 中從 JSON 取得字串物件而不是 Unicode?

如何在 Python 2 中從 JSON 取得字串物件而不是 Unicode?

Linda Hamilton
Linda Hamilton原創
2024-11-03 11:02:02325瀏覽

How to Get String Objects Instead of Unicode from JSON in Python 2?

從JSON 取得字串物件而不是Unicode (Python 2)

在Python 2 中從ASCII 編碼的文字檔案解析JSON 時,預設行為是表示字元串作為Unicode 物件的值。在使用僅接受字串物件的庫時,這可能會帶來問題。

幸運的是,有多種方法可以取得字串物件而不是Unicode 物件:

使用PyYAML

PyYAML 是一個用於解析YAML 的Python 函式庫,YAML是JSON 的超集。它提供了一種在保留 JSON 結構的同時獲取字串物件的便捷方法:

<code class="python">import yaml

json_string = '["a", "b"]'
data = yaml.safe_load(json_string)  # Returns a list of strings</code>

注意:此方法僅適用於 ASCII 編碼的資料。

轉換Unicode到字串物件

如果資料是Unicode 編碼的,您可以使用轉換函數將Unicode 字串轉換為常規字串:

<code class="python">def unicode_to_string(obj):
    if isinstance(obj, basestring):
        return obj.encode('utf-8')
    elif isinstance(obj, dict):
        return dict((unicode_to_string(k), unicode_to_string(v)) for k, v in obj.iteritems())
    elif isinstance(obj, list):
        return [unicode_to_string(v) for v in obj]
    else:
        return obj

# Usage:
json_string = '["\u00e1", "\u00e9"]'
data = json.loads(json_string)
converted_data = unicode_to_string(data)  # Converts Unicode strings to strings</code>

使用物件掛鉤

您也可以在序列化過程中使用物件鉤子將Unicode字串轉換為字串:

<code class="python">import json

def object_hook(obj):
    if isinstance(obj, unicode):
        return obj.encode('utf-8')
    return obj

# Usage:
json_string = '["a", "b"]'
data = json.loads(json_string, object_hook=object_hook)  # Converts Unicode strings to strings during deserialization</code>

以上是如何在 Python 2 中從 JSON 取得字串物件而不是 Unicode?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn