python - 使用json.loads,key不带引号,且value中可能含有“:”,如何最好地处理?
怪我咯
怪我咯 2017-04-18 09:16:41
0
4
811

例如:

'''{
    colorSize: [{
        "Color": "超窄边IPS",
        "SkuId": 1365289,
        "Size": "27英寸"
    }, {
        "Color": "21:9超宽IPS曲面",
        "SkuId": 1742140,
        "Size": "29英寸"
    }, {
        "Color": "17英寸(TN,5:4方屏)",
        "SkuId": 1032147,
        "Size": "17英寸"
    }],
    warestatus: 1,
    shangjiazizhi: false
}'''

为了给key加双引号,必需先选中之
因为内容带有“:”,

  1. (\w+):,误处理"21:9超宽IPS曲面"

  2. [{,]\s*(\w+):,误处理"17英寸(TN,5:4方屏)"

有什么比较好的处理方法呢?

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(4)
洪涛

Boleh digunakandemjson https://github.com/dmeranda/d...

Peter_Zhu

Dua penyelesaian
Seorang menggunakan demjson seperti yang @raidou katakan
Seorang lagi menggunakan pyexecjs
Muat naik kod

import execjs
import demjson

str = '''
{
    colorSize: [{
        "Color": "超窄边IPS",
        "SkuId": 1365289,
        "Size": "27英寸"
    }, {
        "Color": "21:9超宽IPS曲面",
        "SkuId": 1742140,
        "Size": "29英寸"
    }, {
        "Color": "17英寸(TN,5:4方屏)",
        "SkuId": 1032147,
        "Size": "17英寸"
    }],
    warestatus: 1,
    shangjiazizhi: false
}
'''
print demjson.decode(str)
print execjs.eval(str)
Peter_Zhu

Versi mudah alih tidak dapat melihat tajuk penuh, bolehkah anda membalas?
Versi mudah alih belum dapat membalas ulasan lagi, saya jengkel
Kemas kini supaya sepadan dengan ruang di hadapan

\s([^"]+):

atau padankan permulaan baris

^([^"]+):
PHPzhong

Saya menyelesaikannya sendiri, biar saya ringkaskan:
Perkara yang paling penting ialah nombor : gila ini mesti muncul dalam berpasangan "

Oleh kerana petikan berganda sentiasa muncul secara berpasangan dan tidak bersilang
Gunakan re.sub untuk menapis pasangan petikan berganda, dan kemudian berikan hasil yang ditapis kepada fungsi untuk diproses: gantikan titik bertindih antara petikan berganda dengan aksara khas , supaya Untuk kemudahan penerangan, saya panggil watak ini

Ganti hasil tanpa kolon kandungan dengan pemprosesan biasa sebelumnya dengan kolon

Kemudian muncul soalan baharu Selepas menambah petikan berganda pada kekunci, jika saya mahu menggantikan kembali ke :, apakah watak istimewa yang harus saya pilih untuk ?

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!