IT-Dienstleistungen

Reguläre Ausdrücke mit Python - Arbeiten mit einer CSV Datei und dem Python re Modul

Der folgende Quelltext setzt voraus, dass diese Gemeindedaten im CSV Format heruntergeladen und als test.csv abgespeichert wurden. Befindet sich der Python Quelltext in myretest.py in demselben Ordner wie die CSV Datei, so lässt er sich folgendermaßen ausführen:

python myretest.py

Empfohlene Lektüre

Beispiel: Konvertierung von Gemeindeschlüsseln in einen IPv6 Adressbestandteil

Hier werden die dezimalen Gemeindeschlüssel aus der CSV Datei in einen 48 bit Bestandteil einer IPv6 Adresse konvertiert. Dabei werden die fehlenden Bits aufgefüllt. Die Ausgabe kann als Hostbestandteil einer IPv6 Adresse verwendet werden.

import csv, re

def main():
    with open("test.csv", "r", encoding="iso8859_15", newline="") \
    as csvfile:
        dialect_sniffed = csv.Sniffer().sniff(csvfile.read(4096), ";")
        csvfile.seek(0)
        fieldnames = ["date", "g-key", "name", "area-size", "garbage"]
        contents = csv.DictReader(csvfile, fieldnames, \
        "garbage", "FILLER", dialect_sniffed)
        for row in contents:
            # {2,2} 16 Bundesland
            # {3,3} 35 Statistische Region, Regierungsbezirk, Lüneburg
            # {5,5} 471 Landkreis, Kreis, kreisfreie Stadt, Stadtkreis
            # {8,8} 13391 Gemeinde
            m = re.search("^[0-9]{1,8}$", row["g-key"])
            if m != None:
                # print(row["g-key"], row["name"], row["area-size"])
                padded_hex_g_key = \
                str(hex(int("{:9>14}".format(row["g-key"]))))
                ipv6_host_part = re.findall("....", padded_hex_g_key[2:])
                print(":".join(ipv6_host_part))

if __name__ == "__main__":
    main()
    print("Script ran standalone and was not imported.")

Zahlung veranlassen