This is the first post of Advent Calendar. Since the python frame was empty, I will post one case while I am afraid.
Click here for the previous article → How to get weather information with LINE Notify + Python
It's early December this year. December is Christmas, but it's also the time to prepare a New Year's card.
When I thought about issuing a New Year's card, I knew the address, but what was the zip code ...? Do you ever think that? (And vice versa)
Now, if you do a google search for the address, you will get the zip code, I wish there was a tool that could search for addresses and zip codes without an internet environment. After mastering python, I made a simple console application.
There are quite a few cases of searching for an address by zip code, I thought that there were not many cases of searching for a zip code from an address, so I tried to handle it in either case.
· Mac OS Mojave ・ Python3 ・ Pyinstaller
The flowchart is as follows. Basically, do you want to dump the address of the zip code you entered? The format is such that the user can interactively select whether to dump the zip code corresponding to the entered address (only some place names are acceptable).
I download "KEN_ALL.CSV" from the postal code data download page from the post office web page, and put it directly under / Users / to load it.
https://www.post.japanpost.jp/zipcode/download.html
FindAddress_for_Mac.py
import sys
# Set Path including "KEN_ALL.CSV" for Mac OS X
csv_path = "/Users/KEN_ALL.CSV"
def GetAddress():
postal_code = input("Type target postal code:")
fp = open(csv_path, "r", encoding="shift_jis")
for line in fp:
line = line.replace(' ', '') # cut space
line = line.replace('"', '') # cut double quatation
cells = line.split(",") # split by comma
code = cells[2] # Postal code
pref = cells[6] # Prefucture
city = cells[7] # City name
ad = cells[8] # Address name
title = pref + city + ad
if code.find(postal_code) != -1:
print(title)
fp.close()
def GetPostalCode():
addr = input("Type target address:")
fp = open(csv_path, "r", encoding="shift_jis")
for line in fp:
line = line.replace(' ', '') # cut space
line = line.replace('"', '') # cut double quatation
cells = line.split(",") # split by comma
code = cells[2] # Postal Code
pref = cells[6] # Prefucture
city = cells[7] # City name
ad = cells[8] # Address name
title = pref + city + ad
if title.find(addr) != -1:
print(code + ":" + title)
fp.close()
def main():
print("\n")
print("####################################################")
print("################### FINDADDRESS ####################")
print("####################################################")
print("\n")
print("[DISCRIPTION]")
print(" This tool is to get address or postal code.")
print(" If you type '1', you can get unknown address by typing postal code.")
print(" If you type '2', you can get unknown postal code by typing KEYWORD about address name.")
print("\n")
while True:
print("[OPERATION]")
print("input the following number which you want to get.")
number = input("[1:Address 2:PostalCode 99 (or SPACE):Close]:")
if number.isdigit() != 1: # Filter non-integer value
sys.exit()
int_number = int(number) # Convert String to Integer
if int_number == 1: # The case that user types "1"
GetAddress()
print("\n")
elif int_number == 2: # The case that user types "2"
GetPostalCode()
print("\n")
elif int_number == 99: # The case that user types "99"
sys.exit()
else: # Exception handling
print("Invalid Number. Type again.")
print("\n")
if __name__ == "__main__":
main()
Please refer to this article for the procedure of exe conversion because it is easy to understand.
Make an exe file with PyInstaller https://qiita.com/takanorimutoh/items/53bf44d6d5b37190e7d1
As an example, let's search for the address and zip code of Shinkiba in Koto-ku, Tokyo.
If you enter the postal code "1360082" in the address search of 1, the address of Shinkiba "Shinkiba, Koto-ku, Tokyo" will be dumped. If you enter the address keyword "Shinkiba" in the postal code search of 2, the postal codes and addresses of all the addresses containing the characters of Shinkiba will be dumped as a set.
Before using it, please set the setting at the end of the shell to "Close window" in the terminal environment settings. If you do not do this, the console will remain after the app is closed.
In the future, if I have time, I will try to implement a version compatible with Windows and Linux.
Recommended Posts