SORU
5 HAZİRAN 2009, Cuma


Nasıl Unicode olanları yerine string Nesneleri almak için Python ile JSON dan?

Python ile JSON ayrıştırmak için kullanıyorum (ASCII kodlanmışmetin dosyaları. Ya json simplejson tüm dize ile bu dosyaları yüklerken değerleri string nesneleri yerine nesneleri Unicode için atama.

Sorun, sadece string kabul eden bazı kütüphaneler ile verileri kullanmak zorunda. Kitaplıkları değiştirme ne de güncelleme yapamıyorum.

String nesneleri yerine json simplejson olanlar unicode almak mümkün müdür?

İşte küçük bir örnek:

>>> import json
>>> original_list = ['a', 'b']
>>> json_list = json.dumps(original_list)
>>> json_list
'["a", "b"]'
>>> new_list = json.loads(js)
>>> new_list
[u'a', u'b'] # I want these to be of type `str`, not `unicode`

CEVAP
4 Mayıs 2013, CUMARTESİ


Varken bazı iyi cevaplar burada sona erdi kullanma PyYAML ayrıştırma benim JSON dosyalarını beri verdiği anahtarları ve değerleri gibi str tür dizeleri yerine unicode yazın. JSON beri bu güzel çalışıyor, YAML alt:

>>> import json
>>> import yaml
>>> list_org = ['a', 'b']
>>> list_dump = json.dumps(list_org)
>>> list_dump
'["a", "b"]'
>>> json.loads(list_dump)
[u'a', u'b']
>>> yaml.safe_load(list_dump)
['a', 'b']

Bazı şeyler olsa da not:

  • Anladımstring nesneleritüm kayıtları vardır çünküASCII kodlanmış. Eğer unicode kodlanmış girişleri kullanmak olsaydı, onları geri almak istiyorumunicode nesneleri— dönüşüm yoktur.

  • safe_load Bu işlev; eğer JSON dosyaları yüklemek için kullanırsanız, "" load işlevi zaten. ek güç gerekmez (her zaman muhtemelen) PyYAML kullanmalısınız

  • Eğer istediğiniz bir YAML parser fazla destek için 1.2 sürümü spec (correctly parses very low numbers) deneyin Ruamel YAML: pip install ruamel.yaml import ruamel.yaml as yaml tüm ihtiyacım benim testleri.

Belirtildiği gibi, dönüşüm yok! Eğer sadece ASCII değerleri ve çoğu zaman olamazsın) ile başa çıkmak için emin olabilirsiniz, eğer değil, daha iyi bir kullanımdönüştürme fonksiyonu. Gelen bir şey vardıMark Amerykere ve de kullanabilirsin object_hook olarak harika çalışıyor veya kendi içinde birkaç 20**.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • arnejann

    arnejann

    3 Kasım 2007
  • Brandon McCrary

    Brandon McCr

    15 Ocak 2012
  • Marques Brownlee

    Marques Brow

    21 Mart 2008