首頁 > 後端開發 > Python教學 > 在 Python 2 中解析 JSON 時如何保留字串型別?

在 Python 2 中解析 JSON 時如何保留字串型別?

Mary-Kate Olsen
發布: 2024-11-03 00:38:29
原創
829 人瀏覽過

How to Preserve String Types When Parsing JSON in Python 2?

在Python 2 中解析JSON 時保留字串型別

在Python 2 中解析JSON 有時會導致字串值轉換為Unicode 物件。當與專門需要字串物件的庫互動時,這可能會帶來挑戰。

JSON 轉換為Unicode 物件

當使用JSON 或simplejson 載入ASCII 編碼的文字檔案時Python 2 中,您可能會遇到字串值轉換為Unicode對象的問題。這是由 Python 2 的預設編碼機制解釋的,該機制假定文字採用 Unicode。

替代解析選項:PyYAML

要解決此問題,請考慮使用 PyYAML 解析 JSON檔。 PyYAML 預設將鍵和值視為字串對象,為保留字串類型提供了簡單的解決方案。

範例

<code class="python">import yaml
list_dump = json.dumps(['a', 'b'])
yaml.safe_load(list_dump)  # Returns string objects: ['a', 'b']</code>
登入後複製

註解:

  • 建議使用 PyYAML 的 saSON_load 函數進行 saSON_load 函數。
  • Unicode 字元仍將保留在字串物件中。
  • Ruamel YAML 是一種替代 YAML 解析器,具有更多功能高級功能。

轉換函數

如果 PyYAML 不是一個選項或您需要使用 Unicode,可以使用轉換函數,例如 Mark 提出的轉換函數可以利用 Amery。

範例

<code class="python">def convert_to_str(data):
    """Convert Unicode values to strings."""
    if isinstance(data, dict):
        return {convert_to_str(k): convert_to_str(v) for k, v in data.items()}
    elif isinstance(data, list):
        return [convert_to_str(v) for v in data]
    elif isinstance(data, unicode):
        return data.encode('utf-8')
    else:
        return data</code>
登入後複製

在 JSON 載入期間使用此函數作為 object_hook,Unicode 值將轉換為字串。

以上是在 Python 2 中解析 JSON 時如何保留字串型別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板