대괄호 사이의 마지막 쉼표를 모두 제거하십시오.

샌더 베이커 :

다음을 JSON으로 포맷하려고합니다 (Python에서).

{
   "sessionTimeout":"3600.0",
   "serverVersion":"LK_LK-NL-7_188-176-419",
   "worldDawn":"2018-10-09 06:00:00 Etc/GMT",
   "Data":{
      "Player":[
         {
            "nick":"Player11226400",
            "points":"44",
            "alliancePermission":"0",
            "isOnVacation":"false",
            "id":"5048",
            "rank":"561",
            "entityName":"Player",
         },
         {
            "nick":"Player11230580",
            "points":"15",
            "alliancePermission":"0",
            "isOnVacation":"false",
            "id":"5215",
            "rank":"2081",
            "entityName":"Player",
         },
         {
            "nick":"Player11291581",
            "points":"15",
            "alliancePermission":"0",
            "isOnVacation":"false",
            "id":"5942",
            "rank":"2081",
            "entityName":"Player",
         }
      ]
   }
}

물론 모든 JSON 유효성 검사기는 각} 앞의 끝에 ","때문에 유효한 JSON이 아니라고 알려주므로 해당 쉼표를 제거하고 싶습니다. .replace ( ' "Player", ",'"Player " ')를 사용하여 제거하려고 시도했지만이를 좋은 솔루션으로 간주하지 않습니다. 예를 들어 Alliance 또는 Habitat 문자열에서 뒤에", "가 있기 때문입니다. ( "해비타트"및 "동맹")

누구 든지이 문제에 대한 더 나은 해결책을 찾는 데 도움을 줄 수 있습니까?

장 프랑수아 파브르 :

두 가지 솔루션 :

먼저 json 파일에 boolean null없거나 false/trueboolean이 있으면 ast.literal_eval쉼표를 처리 할 수 있는 입력을 읽는 것이 좋으며 필요한 경우 dict을 json으로 덤프합니다.

d = ast.literal_eval(txt)
print(json.dumps(d,indent=4))

할 수 없다면 정규 표현식을 사용하여 다음 줄이 공백 + 닫는 중괄호 / 대괄호로 시작하면 줄 바꿈 전에 발생하는 쉼표를 제거 할 수 있습니다.

import re

print(json.loads(re.sub(",(\n\s+[\}\]])",r"\1",txt)))

다음은 입력의 축소 버전이있는 2 가지 접근 방식을 포함하는 전체 스 니펫입니다.

import ast,json

txt = """{
   "sessionTimeout":"3600.0",
   "serverVersion":"LK_LK-NL-7_188-176-419",
   "worldDawn":"2018-10-09 06:00:00 Etc/GMT",
   "Data":{
      "Player":[
         {
            "nick":"Player11226400",
            "rank":"561",
            "entityName":"Player",
         },
         {
            "nick":"Player11230580",
            "rank":"2081",
            "entityName":"Player",
         },
         {
            "nick":"Player11291581",
            "rank":"2081",
            "entityName":"Player",
         }
      ]
   }
}"""

print("ast literal eval:")
d = ast.literal_eval(txt)
print(json.dumps(d,indent=4))

import re

print("regex:")
d = json.loads(re.sub(",(\n\s+[\}\]])",r"\1",txt))
print(json.dumps(d,indent=4))

두 방법 모두 입력 파일을 성공적으로 구문 분석합니다. 첫 번째 방법은 널 포인터 및 부울이없는 한 완벽하게 작동하며, 두 번째 방법은 모호한 형식 지정 경우 실패 할 수 있습니다. 운이 좋지 않은 경우 사이에 무언가를 해킹 할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

R에서 마지막 쉼표 앞의 모든 문자를 제거하십시오.

파이썬으로 마지막 쉼표를 제외하고 문자열의 모든 쉼표를 제거하십시오.

jQuery 시간 초과를 사용하여 모두 제거하는 대신 마지막 div를 제거하십시오.

regexp incorreclty split : 쉼표를 사용하지만 대괄호 (모두) 및] 내에는 없음)

for each 루프의 마지막 요소에서 쉼표를 제거하십시오.

json 객체의 마지막 객체에서 쉼표를 제거하십시오.

이중 대괄호를 제거하고 문자열을 유지하십시오.

bash의 마지막 점에서 모든 텍스트를 제거하십시오.

경로에서 마지막 단어를 찾고 bash를 사용하여 정규식으로 대괄호를 제거하십시오.

seaborn 어두운 테마를 사용하고 막대 플롯에서 막대 사이의 간격을 제거하십시오.

regex를 사용하여 괄호 안의 모든 것을 제거하십시오.

pd.Series의 길이를 찾고 마지막 두 문자를 제거하십시오.

쉼표를 폭발 시키지만 괄호 안의 쉼표는 무시하십시오 .php

두 개의 대괄호 사이를 강조 표시하는 메모장 ++

문자열에 두 개 이상의 쉼표가 있는지 확인하고 추가 쉼표를 제거하십시오.

문자열 분할 쉼표를 사용하지만 대괄호 또는 따옴표 인 경우 쉼표 무시

implode 함수를 사용한 후 배열에서 마지막 두 개의 쉼표를 제거하는 방법

Bash의 두 필드마다 쉼표를 인쇄하십시오.

파이썬에서 대괄호 사이에 영숫자가 아닌 예외를 모두 대체하십시오.

대괄호 안의 쉼표를 제거하는 정규식

파이썬을 사용하여 목록의 문자열에서 마지막 두 문자를 제거하십시오.

sed : 마지막 백 슬래시와 쉼표 사이의 모든 데이터를 잡아서 바꾸기

jQuery를 사용하여 각 HTML 입력의 마지막 대괄호 이름 가져 오기

JavaScript 정규식은 모든 숫자를 가져 오지만 대괄호 사이에 모두 제외

대괄호 정규식 밖의 모든 것을 제거하십시오.

괄호 안의 쉼표를 제외한 모든 쉼표의 색인

팬더는 데이터 프레임의 모든 셀에서 대괄호와 쉼표를 제거합니다.

문자열의 마지막 두 문자를 삭제하십시오.

Javascript에서 대괄호 사이에 있지 않은 모든 문자를 교체하십시오.

TOP 리스트

  1. 1

    Matlab의 반복 Sortino 비율

  2. 2

    ImageJ-히스토그램 빈을 변경할 때 최대, 최소 값이 변경되는 이유는 무엇입니까?

  3. 3

    Excel : 합계가 N보다 크거나 같은 상위 값 찾기

  4. 4

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  5. 5

    원-사각형 충돌의 충돌 측면을 찾는 문제

  6. 6

    Oracle VirtualBox-설치를 위해 게스트를 부팅 할 때 호스트 시스템이 충돌 함

  7. 7

    어떻게 아무리 "나쁜", ANY의 SSL 인증서와 HttpClient를 사용하지합니다

  8. 8

    Ubuntu는 GUI에서 암호로 사용자를 만듭니다.

  9. 9

    잘못된 상태 예외를 발생시키는 Apache PoolingHttpClientConnectionManager

  10. 10

    Python 사전을 사용하는 동안 "ValueError : could not convert string to float :"발생

  11. 11

    openCV python을 사용하여 텍스트 문서에서 워터 마크를 제거하는 방법은 무엇입니까?

  12. 12

    Vuetify 다중 선택 구성 요소에서 클릭 한 항목의 값 가져 오기

  13. 13

    C ++ VSCode에서 같은 줄에 중괄호 서식 지정

  14. 14

    Cassandra에서 버전이 지정된 계층의 효율적인 모델링

  15. 15

    JQuery datepicker 기능이 인식되지 않거나 새 프로젝트에서 작동하지 않음

  16. 16

    cuda 11.1에서 Pytorch를 사용할 때 PyTorch가 작동하지 않음: Dataloader

  17. 17

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  18. 18

    상황에 맞는 메뉴 색상

  19. 19

    마우스 휠 JQuery 이벤트 핸들러에 대한 방향 가져 오기

  20. 20

    매개 변수에서 쿼리 객체를 선언하는 방법은 무엇입니까?

  21. 21

    Maven은 아이 프로젝트 대상 폴더를 청소하지

뜨겁다태그

보관