-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
1282cf8
commit 9dc563d
Showing
1 changed file
with
57 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
--- | ||
title: 도로명 주소 파싱 스크립트 | ||
slug: /backend/code/address | ||
last_update: | ||
date: 2023/09/19 | ||
author: 허브 | ||
--- | ||
|
||
### 도로명 주소 파싱 스크립트 | ||
|
||
도로명 주소 파일이 있는 곳에 해당 스크립트로 python 파일을 생성한 후 다음 명령어로 실행하면 됩니다. | ||
|
||
``` | ||
python3 address.py | ||
``` | ||
|
||
```python title=address.py | ||
import os | ||
|
||
|
||
def scan(file_name): | ||
# with 구문으로 파일을 읽기 전용으로 읽어옵니다. | ||
# f.readline()을 이용하여 한 줄씩 읽어올 수 있습니다. | ||
with open(os.path.join("./" + file_name), 'r', encoding='cp949') as f: | ||
while True: | ||
line = f.readline() | ||
if not line: | ||
break | ||
|
||
# 주소가 들어간 파일이 | 기준으로 분리되어있기 때문에 | 기준으로 분리합니다. | ||
splited_line = line.split('|') | ||
address1 = splited_line[2] | ||
address2 = splited_line[3] | ||
address3 = splited_line[4] | ||
|
||
# ' ' 로 구분된 값으로 저장합니다 이는 추후에 ,로 변경하여 csv 형태로 저장할 수 있습니다. | ||
addresses.add(' '.join([address1, address2, address3])) | ||
|
||
|
||
# 출력을 지정합니다. 파일이 없다면 파일이 생성됩니다. | ||
fout = open('./doro.txt', 'w') | ||
|
||
# 주소가 들어갈 set | ||
addresses = set() | ||
|
||
# 현재 폴더에 있는 모든 파일을 순회합니다. | ||
# 파일이 txt로 끝나는 경우에 해당 파일에 대해 스캔하여 주소 set에 담습니다. | ||
for file_name in os.listdir("./"): | ||
if (file_name.endswith('txt')): | ||
print(file_name) | ||
scan(file_name) | ||
|
||
# 모든 파일의 순회가 끝난 경우 인천광역시 연수구 동춘동의 형태로 출력할 파일에 저장합니다. | ||
for address in addresses: | ||
fout.write(address + '\n') | ||
|
||
``` |