Prüfen Sie für IP-Adressen
Gibt es bereits Bibliotheken, die zum analysieren einer Zeichenfolge als eine ipv4-oder ipv6-Adresse, oder wenigstens feststellen, ob ein string eine IP-Adresse (egal welcher Art)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, es ist
ipaddr
Modul, dass kann Ihnen helfen, zu überprüfen, ob ein string ist ein IPv4/IPv6-Adresse und zum erkennen der version.Aber dies ist nicht ein standard-Modul, so ist es nicht immer möglich, es zu benutzen.
Du auch versuchen, die standard -
socket
Modul:Für IPv6-Adressen, die Sie verwenden müssen
socket.inet_pton(socket.AF_INET6, address)
.Ich möchte auch zu beachten, dass
inet_aton
werden versuchen, Sie zu konvertieren (und wirklich wandeln es) Adressen wie10
,127
und so weiter, die nicht Aussehen wie IP-Adressen.IPAddress
; Feste meine Antwort; danke für die Anregung!socket.inet_aton("1.1.1")
socket.inet_aton()
ist nur verfügbar auf unix-system. Finden Sie die pydoc für mehr details.Für IPv4 verwenden, können Sie
Wenn es eine Ausnahme auslöst, wird
some_string
ist keine gültige ip-AdresseFür IPv6, die Sie verwenden können:
Wieder, wirft es eine Ausnahme, wenn
some_string
ist keine gültige Adresse.IPv4 + IPv6-Lösung, die sich nur auf das standard-Bibliothek. Zurück
4
oder6
oder wirftValueError
.Können Sie die
netaddr
Bibliothek. Es hat valid_ipv4/valid_ipv6 Methoden:ipaddr -- Google die IP-Adresse der manipulation-Paket.
Beachten Sie, dass ein Vorschlag, der eine überarbeitete version des Pakets in der Python-standard-Bibliothek wurde vor kurzem angenommen (siehe PEP 3144).
Versuchen
oder Holen Sie sich den source code von hier
Wenn Sie wissen, für sicher, dass die Adresse gültig ist und nur versucht, zu entscheiden, ob es ipv4 oder ipv6, wäre es nicht genug zu tun, nur:
Ich lieber ip_interface, weil es behandelt beide Situationen mit und ohne Präfix Maske, zum Beispiel, die beide "10.1.1.1/24" sowie einfach "10.1.1.1". Unnötig zu sagen, funktioniert sowohl für v4 als auch v6