Ceci est le premier article du Calendrier de l'Avent. Puisque le cadre python était ouvert, je publierai un cas pendant que j'ai peur.
Cliquez ici pour l'article précédent → Comment obtenir des informations météo avec LINE Notify + Python
Dès décembre de cette année. Décembre, c'est Noël, mais c'est aussi le moment de préparer une carte de nouvel an.
Quand j'ai pensé à émettre une carte de nouvel an, je connaissais l'adresse, mais quel était le code postal ...? Avez-vous déjà pensé cela? (Et vice versa)
Maintenant, si vous effectuez une recherche Google pour l'adresse, vous obtiendrez le code postal, J'aurais aimé qu'il y ait un outil qui pourrait rechercher des adresses et des codes postaux sans environnement Internet. Après avoir maîtrisé python, j'ai créé une application console simple.
Il existe de nombreux cas de recherche d'adresse par code postal, Je ne pensais pas qu'il y avait beaucoup de cas de recherche d'un code postal à partir d'une adresse, alors j'ai essayé de le gérer dans les deux cas.
・ Mac OS Mojave ・ Python3 ・ Pyinstaller
L'organigramme est le suivant. En gros, voulez-vous vider l'adresse du code postal que vous avez entré? Le format est tel que l'utilisateur peut choisir de manière interactive de vider le code postal correspondant à l'adresse saisie (seuls certains noms de lieux sont acceptables).
Je télécharge "KEN_ALL.CSV" à partir de la page de téléchargement des données de code postal de la page Web du bureau de poste, et je le mets directement sous / Utilisateurs / pour le lire.
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()
Veuillez vous référer à cet article pour la procédure de conversion exe.
Créer un fichier exe avec PyInstaller https://qiita.com/takanorimutoh/items/53bf44d6d5b37190e7d1
A titre d'exemple, recherchons l'adresse et le code postal de Shinkiba à Koto-ku, Tokyo.
Si vous entrez le code postal "1360082" dans la recherche d'adresse de 1, l'adresse de Shinkiba "Shinkiba, Koto-ku, Tokyo" sera jeté. Si vous entrez le mot-clé d'adresse «Shinkiba» dans la recherche de code postal de 2, les codes postaux et les adresses de toutes les adresses contenant les caractères de Shinkiba seront sous-évalués en tant qu'ensemble.
Avant de l'utiliser, assurez-vous de définir le paramètre de sortie du shell sur "fermer la fenêtre" dans les préférences du terminal. Si vous ne le faites pas, la console restera après la fermeture de l'application.
Dans le futur, si j'ai le temps, j'essaierai d'implémenter une version compatible avec Windows et Linux.
Recommended Posts