Python 주소 파서

Abid Ullah 2023년10월10일
  1. Python 라이브러리 PyParsing을 사용하여 주소 구문 분석
  2. Python에서 PyParsing을 사용하여 CSV 파일에서 주소 구문 분석
Python 주소 파서

이 기사에서는 Python을 사용하여 주소를 구문 분석하는 방법을 보여줍니다. pyparsing 라이브러리를 사용하여 수동으로 주소를 구문 분석하고 함수 또는 pyparsing을 CSV 파일의 주소에 사용합니다.

간단한 예제로 시작한 다음 복잡한 예제로 넘어갑니다.

Python 라이브러리 PyParsing을 사용하여 주소 구문 분석

Python 프로그래밍 언어의 pyparsing 모듈이 텍스트 데이터에 대한 작업을 수행하는 데 매우 유용한 도구라는 것은 널리 알려져 있습니다.

텍스트 데이터를 구문 분석하고 수정하는 데 사용되는 pyparsing 패키지는 주소 작업을 단순화합니다. 이는 모듈이 주소를 변환하고 구문 분석하는 데 도움이 될 수 있기 때문입니다.

이 기사에서는 구문 분석 및 수정을 처리하기 위한 PyParsing 모듈의 사용법에 대해 설명합니다. PyParsing 모듈을 사용하여 주소를 구문 분석하는 실제 예를 살펴보겠습니다.

그런 다음 PyParsing을 사용하여 주소 데이터를 변경하고 구문 분석하는 방법을 보여 주는 보다 광범위한 예제를 살펴보겠습니다.

PyParsing을 사용한 간단한 주소 구문 분석

Python 라이브러리인 PyParsing을 사용하여 주소를 구문 분석하는 기본 예제부터 살펴보겠습니다. 첫 번째 예로 다음 주소를 보고 파싱해 봅시다.

567 Main Street

이 주소를 구문 분석하려면 다음 단계를 따르십시오.

  • pyparsing 라이브러리 가져오기

    먼저 *를 언급하여 모든 모듈 및 기능과 함께 pyparsing 라이브러리를 가져옵니다.

    from pyparsing import *
    
  • 변수 만들기

    이제 변수를 만들고 구문 분석하려는 주소에 변수를 할당합니다.

    address = "567 Main Street"
    
  • 무너지다

    이제 숫자알파를 언급하여 주소 부분을 분해합니다.

    addressParser = Word(nums) + Word(alphas) + Word(alphas)
    
  • 이제 변수를 만들고 pyparsing 라이브러리에서 parseString을 호출합니다.
    addressParts = addressParser.parseString(address)
    
  • 인쇄

    마지막으로 변수를 인쇄하고 결과를 확인합니다.

    print(addressParts)
    

전체 코드를 작성하고 실행하여 결과를 확인해 봅시다.

from pyparsing import *

address = "123 Main Street FL"
addressParser = Word(nums) + Word(alphas) + Word(alphas) + Word(alphas)
addressParts = addressParser.parseString(address)
print(addressParts)

출력:

['123', 'Main', 'Street', 'FL']

이 코드는 주소를 거리 번호, 거리 이름, 거리 유형 및 주소 상태의 네 부분으로 구문 분석합니다.

도로 번호가 첫 번째 부분이 되고, 거리 이름이 두 번째 부분이 되며, 도로 유형이 세 번째 부분이 되고, 상태가 마지막 부분이 됩니다.

PyParsing의 4가지 유용한 기능

실제 구문 분석을 수행하기 위해 사용 가능한 네 가지 기능 중 하나를 사용할 수 있습니다.

  1. ParseString - parseString을 사용하면 끝의 불필요한 내용에 대해 걱정하지 않고 처음부터 텍스트 구문 분석을 시작할 수 있습니다.
  2. ScanString - ScanStringre.finditer()와 같이 입력 문자열에서 일치하는 단어를 검색합니다.
  3. SearchString - SearchStringscanString과 유사하지만 단일 토큰을 반환하는 대신 컬렉션을 제공합니다.
  4. TransformString - TransformStringscanString과 유사하지만 선택한 다른 토큰으로 토큰을 대체할 수 있습니다.

Python에서 PyParsing을 사용하여 CSV 파일에서 주소 구문 분석

주소 지정 정보는 CSV 파일에 자주 기록되는 특정 데이터입니다. 구성 방식에 큰 차이가 있기 때문에 구문 분석하기 어려울 수 있습니다.

pyparsing 모듈은 정의된 구조를 사용하여 CSV 파일에서 주소 추출을 단순화합니다. 시작하려면 주소를 올바르게 구문 분석하는 방법에 대한 몇 가지 간단한 지침과 기능을 정의해 보겠습니다.

그런 다음 주소가 포함된 CSV 파일을 구문 분석하는 데 이러한 원칙을 적용합니다.

구성 파일 또는 주소의 CSV 파일이 다음과 같다고 가정합니다.

city=LAUDERDALE, state=FL, Zipcode: 33316

key=value 형식으로 문자열을 구문 분석해야 합니다. KEY=VALUE 문자열은 키, 등호 및 값의 세 부분으로 구성됩니다.

그러한 식의 구문 분석의 최종 출력에 등호를 포함하는 것은 불필요합니다. Suppress() 메서드를 사용하여 출력에 토큰이 포함되지 않도록 할 수 있습니다.

토큰 이름은 setResultsName() 함수에 의해 제공되거나 파서가 구성될 때 이름을 인수로 사용하여 파서를 호출하여 특정 토큰을 검색하는 것이 약간 더 간단해집니다. 토큰에는 관련 이름이 있는 것이 좋습니다.

코드를 사용해 보고 CSV 파일에서 pyparsing이 어떻게 작동하는지 살펴보겠습니다.

모든 기능과 모듈이 포함된 pyparsing 라이브러리를 가져오는 것으로 시작하겠습니다.

from pyparsing import *

둘째, 출력을 위한 입력의 부분에 대한 변수를 생성합니다. 주소 데이터 세트에 알파벳과 숫자가 포함될 수 있으므로 alphanums에 대해 언급하겠습니다.

key = Word(alphanums)("key")

CSV 파일의 출력에서 = 기호를 제거하려고 합니다. Suppress 기능을 사용합니다.

equals = Suppress("=")

이제 value 부분에 대한 변수를 만들 것입니다. 그리고 다시, 주소의 데이터 세트가 알파벳과 숫자를 포함할 수 있기 때문에 alphanums에 대해 언급하겠습니다.

value = Word(alphanums)("value")

이제 변수를 연결하기 위해 다른 변수를 생성합니다.

keyValueExpression = key + equals + value

이제 파일 형식을 사용하여 주소의 CSV 파일을 엽니다. 그리고 file.read 기능을 사용하여 파일의 모든 데이터를 읽습니다.

with open("/address.csv") as address_file:
    address_file = address_file.read()

그런 다음 scanString 함수 또는 pyparsing과 함께 for 루프를 사용하여 주소의 각 줄을 하나씩 읽습니다.

for adrs in keyValueExpression.scanString(address_file):
    result = adrs[0]

마지막으로 print 기능을 사용하여 결과를 확인합니다.

print("{0} is {1}".format(result.key, result.value))

여기에서 코드가 끝나고 이제 전체 코드를 작성하여 실행합니다. 그리고 주소가 포함된 CSV 파일을 제공하면 어떤 결과를 얻을 수 있는지 확인하십시오.

# import library
from pyparsing import *

key = Word(alphanums)("key")
# delet = from the output
equals = Suppress("=")
value = Word(alphanums)("value")
keyValueExpression = key + equals + value
# use file formating to open csv file
with open("/content/address.csv") as address_file:
    address_file = address_file.read()
# use for loop to read your CSV file
for adrs in keyValueExpression.scanString(address_file):
    result = adrs[0]
    # print the output
    print("{0} is {1}".format(result.key, result.value))

출력:

city is LAUDERDALE
state is FL

코드의 출력은 파일에 포함된 데이터를 보여줍니다. address.csv 파일에는 주소가 하나만 있었습니다.

그리고 주소가 구문 분석될 때 pyparsing 라이브러리를 사용하는 기능을 볼 수 있습니다.

‘PyParsing’은 텍스트를 토큰으로 구문 분석하고 개별 토큰을 검색하거나 교체할 때 정규 표현식에 대한 보다 강력하고 성숙한 대안을 제공합니다.

예를 들어 중첩 필드는 PyParsing에는 문제가 되지 않지만 정규식에는 문제가 됩니다. 이 파서는 lexyacc와 같은 이전 대기와 비슷합니다.

즉, 정규식을 사용하여 태그를 검색하고 HTML에서 데이터를 추출할 수 있지만 HTML 파일을 확인하는 데 사용할 수는 없습니다. 그러나 pyparsing을 사용하면 이를 수행할 수 있습니다.

이 기사가 Python에서 사용되는 주소 파서를 이해하는 데 도움이 되기를 바랍니다.

작가: Abid Ullah
Abid Ullah avatar Abid Ullah avatar

My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.

LinkedIn