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

例如:

'''{
    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方屏)"

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

怪我咯
怪我咯

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

모든 응답(4)
洪涛

사용 가능demjson https://github.com/dmeranda/d...

Peter_Zhu

두 가지 솔루션
하나는 @raidou가 말한 대로 demjson을 사용합니다
다른 하나는 pyexecjs를 사용합니다
코드 업로드

으아악
Peter_Zhu

모바일 버전은 제목이 안 보이는데 답글 주실 수 있나요?
아직 모바일 버전은 댓글 답글이 안 돼서 짜증나네요
앞 공백에 맞게 업데이트하세요

으아악

또는 줄의 시작 부분과 일치

으아악
PHPzhong

제가 직접 해결했습니다. 간단하게 설명하겠습니다.
가장 중요한 점은 이러한 미친 : 숫자가 쌍을 이루는 "

에 나타나야 한다는 것입니다.

큰따옴표는 항상 쌍으로 나타나며 교차하지 않기 때문입니다.
re.sub를 사용하여 큰따옴표 쌍을 필터링한 다음 필터링된 결과를 함수에 제공하여 처리합니다. 큰따옴표 사이의 콜론을 특수 문자로 바꿉니다. , 설명의 편의를 위해 이 캐릭터를

이라고 부르겠습니다.

콜론 내용이 없는 결과를 콜론이 포함된 이전 일반 처리로 대체

그러면 새로운 질문이 나옵니다. 키에 큰따옴표를 추가한 후 :로 바꾸려면 에 어떤 특수 문자를 선택해야 합니까?

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿