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가지 유용한 기능
실제 구문 분석을 수행하기 위해 사용 가능한 네 가지 기능 중 하나를 사용할 수 있습니다.
ParseString
-parseString
을 사용하면 끝의 불필요한 내용에 대해 걱정하지 않고 처음부터 텍스트 구문 분석을 시작할 수 있습니다.ScanString
-ScanString
은re.finditer()
와 같이 입력 문자열에서 일치하는 단어를 검색합니다.SearchString
-SearchString
은scanString
과 유사하지만 단일 토큰을 반환하는 대신 컬렉션을 제공합니다.TransformString
-TransformString
은scanString
과 유사하지만 선택한 다른 토큰으로 토큰을 대체할 수 있습니다.
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
에는 문제가 되지 않지만 정규식에는 문제가 됩니다. 이 파서는 lex
및 yacc
와 같은 이전 대기와 비슷합니다.
즉, 정규식을 사용하여 태그를 검색하고 HTML에서 데이터를 추출할 수 있지만 HTML 파일을 확인하는 데 사용할 수는 없습니다. 그러나 pyparsing
을 사용하면 이를 수행할 수 있습니다.
이 기사가 Python에서 사용되는 주소 파서를 이해하는 데 도움이 되기를 바랍니다.
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