[PYTHON] Interaktive Konsolenanwendung für die Adress- und Postleitzahlensuche

Einführung

Dies ist der erste Beitrag des Adventskalenders. Da der Python-Frame geöffnet war, werde ich einen Fall veröffentlichen, wenn ich Angst habe.

Klicken Sie hier für den vorherigen Artikel → So erhalten Sie Wetterinformationen mit LINE Notify + Python

Hintergrund

Bereits im Dezember dieses Jahres. Dezember ist Weihnachten, aber es ist auch Zeit, eine Neujahrskarte vorzubereiten.

Als ich darüber nachdachte, eine Neujahrskarte auszustellen, kannte ich die Adresse, aber wie lautete die Postleitzahl ...? Denkst du das jemals? (Und umgekehrt)

Wenn Sie nun eine Google-Suche nach der Adresse durchführen, erhalten Sie die Postleitzahl. Ich wünschte, es gäbe ein Tool, das ohne Internetumgebung nach Adressen und Postleitzahlen suchen könnte. Nachdem ich Python beherrscht hatte, machte ich eine einfache Konsolen-App.

Es gibt einige Fälle, in denen nach einer Adresse per Postleitzahl gesucht wird. Ich dachte nicht, dass es viele Fälle gab, in denen nach einer Postleitzahl von einer Adresse aus gesucht wurde, also habe ich in beiden Fällen versucht, damit umzugehen.

Umgebung

・ Mac OS Mojave ・ Python3 ・ Pyinstaller

Verarbeitungsspezifikationen

Das Flussdiagramm ist wie folgt. Möchten Sie grundsätzlich die Adresse der von Ihnen eingegebenen Postleitzahl ausgeben? Das Format ist so, dass der Benutzer interaktiv auswählen kann, ob die der eingegebenen Adresse entsprechende Postleitzahl ausgegeben werden soll (nur einige Ortsnamen sind zulässig).

FindAddress.png

Quellcode

Ich lade "KEN_ALL.CSV" von der Download-Seite für Postleitzahlendaten von der Webseite der Post herunter und lege sie direkt unter / Users / ab, um sie zu lesen.

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()

Machen Sie exe mit Pyinstaller

In diesem Artikel finden Sie Informationen zum Verfahren der Exe-Konvertierung.

Erstellen Sie mit PyInstaller eine exe-Datei https://qiita.com/takanorimutoh/items/53bf44d6d5b37190e7d1

Ausführungsergebnis

Lassen Sie uns als Beispiel nach der Adresse und Postleitzahl von Shinkiba in Koto-ku, Tokio, suchen.

Wenn Sie bei der Adressensuche von 1 die Postleitzahl "1360082" eingeben, die Adresse von Shinkiba "Shinkiba, Koto-ku, Tokio" wird abgeladen. Wenn Sie das Adressschlüsselwort "Shinkiba" in die Postleitzahlensuche in 2 eingeben, werden die Postleitzahlen und Adressen aller Adressen, die die Zeichen von Shinkiba enthalten, als Satz ausgegeben.

スクリーンショット 2019-12-05 0.42.01.png

wichtiger Punkt

Stellen Sie vor der Verwendung sicher, dass die Shell-Exit-Einstellung in den Terminaleinstellungen auf "Fenster schließen" eingestellt ist. Wenn Sie dies nicht tun, bleibt die Konsole nach dem Schließen der App erhalten.

名称未設定.png

Schließlich

Wenn ich Zeit habe, werde ich in Zukunft versuchen, eine mit Windows und Linux kompatible Version zu implementieren.

Recommended Posts

Interaktive Konsolenanwendung für die Adress- und Postleitzahlensuche
Interaktive Konsolenanwendung für die Adress- und Postleitzahlensuche
Komfortables LaTeX mit Windows-Subsystem für Linux und VS-Code
Holen Sie sich eine Adresse aus einer Postleitzahl
Vektorisieren Sie Sätze und suchen Sie nach ähnlichen Sätzen
Kausales Denken und kausale Suche von Python (für Anfänger)