>  기사  >  백엔드 개발  >  JSON 처리를 위해 Python 정규식을 사용하는 방법

JSON 처리를 위해 Python 정규식을 사용하는 방법

PHPz
PHPz원래의
2023-06-23 10:06:351902검색

일상적인 프로그래밍 작업에서 JSON 데이터를 처리하고 정보를 추출해야 하는 경우가 있는데, 정규식의 강력한 기능을 사용하면 이 작업을 빠르고 효율적으로 완료하는 데 도움이 될 수 있습니다. 이번 글에서는 JSON 처리를 위해 Python 정규식을 사용하는 방법을 소개하겠습니다.

JSON은 네트워크 전송 및 데이터 저장에 일반적으로 사용되는 경량 데이터 교환 형식입니다. Python에서는 json 라이브러리를 사용하여 JSON 데이터를 구문 분석할 수 있지만, 경우에 따라 JSON 데이터의 특정 처리 및 추출을 수행해야 합니다. 이때 정규 표현식이 그 역할을 합니다.

먼저 JSON 데이터의 기본 구조를 살펴보겠습니다. JSON 데이터는 일반적으로 키-값 쌍으로 구성됩니다. 키와 값은 콜론 ":"으로 구분되고, 각 키-값 쌍은 쉼표 ","로 구분되며, 가장 바깥쪽 레이어는 일반적으로 중괄호 "{}"로 묶입니다. . 예:

{
   "name": "John",
   "age": 30,
   "city": "New York"
}

이제 Python 정규식을 사용하여 이 JSON 데이터를 추출하는 방법을 살펴보겠습니다. "이름" 및 "나이" 필드를 추출해야 한다고 가정하면 다음 정규식을 사용할 수 있습니다.

"name":s*"([^"]+)",s*"age":s*(d+)

이 정규식을 분석하십시오.

  • ": "" 문자와 일치
  • s*: 임의 개수의 공백 문자와 일치
  • (그룹): 일치하는 콘텐츠를 캡처합니다. 그룹은 모든 문자 또는 정규식일 수 있습니다.
  • 1 , "

을 제외한 모든 문자와 일치합니다. 위의 정규 표현식을 사용하면 "name" 필드에 해당하는 값과 "age" 필드에 해당하는 값을 추출할 수 있습니다. Python 코드를 사용하여 구현합니다.

import re

s = '{"name": "John", "age": 30, "city": "New York"}'

pattern = re.compile(r'"name":s*"([^"]+)",s*"age":s*(d+)')

match = pattern.search(s)

if match:
    name = match.group(1)
    age = match.group(2)
    print(name, age)

출력:

John 30

다음으로 JSON 데이터 추출에 Python 정규식을 사용하는 방법에 대한 더 많은 응용 시나리오를 살펴보겠습니다.

  1. 지정된 필드의 값 추출

때로는 특정 필드의 값만 추출해야 하는 경우가 있습니다. 값에는 다음 정규식을 사용할 수 있습니다.

"field_name":s*"([^"]+)"

예를 들어 위 JSON 데이터에서 "city" 필드에 해당하는 값을 추출해야 하는 경우 다음과 같은 정규식을 사용할 수 있습니다.

"city":s*"([^"]+)"

Python 코드 구현:

import re

s = '{"name": "John", "age": 30, "city": "New York"}'

pattern = re.compile(r'"city":s*"([^"]+)",')

match = pattern.search(s)

if match:
    city = match.group(1)
    print(city)

출력:

New York
  1. 배열 유형 요소 추출

JSON 데이터에서 때로는 배열 유형 요소의 값을 추출해야 할 경우 다음 정규식을 사용할 수 있습니다.

"array_field":s*[s*([sS]*?)s*]

예를 들어 다음이 필요합니다. 다음 JSON 데이터에서 "pets" 필드를 추출하려면 해당 값의 모든 요소:

{
   "name": "John",
   "age": 30,
   "pets": [
       {
           "name": "dog",
           "age": 3
       },
       {
           "name": "cat",
           "age": 2
       }
   ]
}

다음 정규식을 사용할 수 있습니다.

"pets":s*[s*([sS]*?)s*]

Python 코드 구현:

import re

s = '{"name": "John", "age": 30, "pets": [{"name": "dog", "age": 3},{"name": "cat", "age": 2}]}'

pattern = re.compile(r'"pets":s*[s*([sS]*?)s*]')

match = pattern.search(s)

if match:
    pets = match.group(1)
    print(pets)

출력:

{"name": "dog", "age": 3},{"name": "cat", "age": 2}
  1. 다단계 중첩 요소 추출

때때로 여러 수준을 추출해야 하는 경우 중첩된 요소의 값에 대해 다음 정규 표현식을 사용할 수 있습니다.

"object1":s*{s*[sS]*?"object2":s*{s*[sS]*?"field_name":s*"([^"]+)"

예를 들어 두 번째 요소의 "age" 필드에 해당하는 값을 추출해야 합니다. 다음 JSON 데이터의 "pets" 필드에 해당하는 값의 요소:

{
   "name": "John",
   "age": 30,
   "pets": [
       {
           "name": "dog",
           "age": 3
       },
       {
           "name": "cat",
           "age": 2
       }
   ]
}

다음과 같이 정규식을 사용할 수 있습니다.

"pets":s*[s*[sS]*?"age":s*(d+)[sS]*?}

Python 코드 구현:

import re

s = '{"name": "John", "age": 30, "pets": [{"name": "dog", "age": 3},{"name": "cat", "age": 2}]}'

pattern = re.compile(r'"pets":s*[s*[sS]*?"age":s*(d+)[sS]*?}')

match = pattern.search(s)

if match:
    age = match.group(1)
    print(age)

출력:

2

요약:
정규식 사용 JSON 처리를 사용하면 JSON 데이터를 보다 유연하게 추출하고 처리할 수 있습니다. 이는 JSON 데이터의 필터링, 필터링, 변환 등이 필요한 특정 애플리케이션 시나리오에 매우 중요합니다. 그러나 JSON 데이터를 처리할 때 정규 표현식이 필요하다는 점에 유의해야 합니다. 좀 더 복잡한 상황에는 적합하지 않을 수 있으니, 실제 상황에 따라 유연하게 선택하셔야 합니다


  1. "
.

위 내용은 JSON 처리를 위해 Python 정규식을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.