>  Q&A  >  본문

python - 使用json.loads,key不带引号,且value中可能含有“:”,如何最好地处理?

例如:

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

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

怪我咯怪我咯2740일 전813

모든 응답(4)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-18 09:18:41

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

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:18:41

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

    으아악

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:18:41

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

    으아악

    또는 줄의 시작 부분과 일치

    으아악

    회신하다
    0
  • PHPz

    PHPz2017-04-18 09:18:41

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

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

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

    이라고 부르겠습니다.

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

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

    회신하다
    0
  • 취소회신하다