ISBN-13 13 Ziffern erfordert ihre Gültigkeit. Ihr Code überprüft nicht, ob alle Zeichen Ziffern sind (mit Ausnahme des Trennzeichens -
), und überprüft nicht die tatsächliche Länge. Außerdem sind fünf Teile erforderlich, und Sie könnten die Prüfziffer überprüfen.
Insbesondere Code nicht immer True
zurückkehren, weil das vierte Segment (lst[3]
) prüft, ob genau ein Zeichen (if len(lst[3])==1:
) jedoch, dass Element typischerweise länger sein als 1 Stelle.
Es gibt über PyPI verfügbare Python-Bibliotheken, die ISBN-Codes validieren können. Hier ist ein Beispiel isbnlib
mit:
>>> import isbnlib
>>> isbnlib.is_isbn13('978-3-16-148410-0')
True
>>> isbnlib.is_isbn13('978-3-16-148410-5')
False
>>> isbnlib.is_isbn13('978-3-16-148410-A')
False
>>> isbnlib.is_isbn13('979-3-16-148410-9')
True
Eine andere, weniger Gewicht Bibliothek ist pyisbn
:
>>> import pysisbn
>>> pyisbn.validate('979-3-16-148410-9')
True
>>> pyisbn.validate('979-3-16-148410-0')
False
Der Vorteil dieser Bibliotheken verwenden, die nicht sparen Sie den Aufwand zu parsen ISBN selbst reiht, ist, dass sie bieten zusätzliche Funktionen wie die Konvertierung von ISBN-13 zu ISBN-10.
Geben Sie eine Beispieleingabe an, bei der ein Fehler auftritt. – SuperSaiyan
978-3-16-148410-0 würde passen, 978-3-16-148410 würde fehlschlagen – Miryloth
Mögliches Duplikat von [Wie benutze ich Python, um alle isbn in einer Textdatei zu finden?] (Http://stackoverflow.com/ Fragen/14258720/how-to-Use-Python-zu-finden-alles-isbn-in-einem-Text-Datei) – PyNEwbie