Python: Módulo: ISBNlib

pip install isbnlib

Podemos validar si es un ISBN válido (ya sea 10 o 13):

In [1]: from isbnlib import notisbn, is_isbn10, is_isbn13

In [2]: isbn10 = '8474860393'

In [3]: isbn13 = '9788474860399'

In [4]: noisbn = '7hgy6767'

In [5]: notisbn(isbn10)
Out[5]: False

In [6]: notisbn(isbn13)
Out[6]: False

In [7]: notisbn(noisbn)
Out[7]: True

In [9]: is_isbn10(isbn10)
Out[9]: True

In [10]: is_isbn10(isbn13)
Out[10]: False

In [11]: is_isbn13(isbn10)
Out[11]: False

In [12]: is_isbn13(isbn13)
Out[12]: True

Como podemos ver la comprobación es si no es isbn, con lo cual devuelve True cuando NO es un ISBN válido y False cuando SI es un ISBN válido.

La validación de cada ISBN (10 o 13) devuelve True si lo es y False si no lo es.

Este método lo que hace es presentar el ISBN con guiones como suele estar en los libros:

In [1]: from isbnlib import mask
In [2]: isbn10 = '8474860393'

In [3]: isbn13 = '9788474860399'

In [4]: noisbn = '7hgy6767'

In [5]: mask(isbn10)
Out[5]: '84-7486-039-3'

In [6]: mask(isbn13)
Out[6]: '978-84-7486-039-9'

In [7]: mask(noisbn)
---------------------------------------------------------------------------
NotValidISBNError                         Traceback (most recent call last)
 in 
----> 1 mask(noisbn)

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/isbnlib/_ext.py in mask(isbn, separator)
     18 def mask(isbn, separator='-'):
     19     """`Mask` a canonical ISBN."""
---> 20     return msk(isbn, separator)
     21
     22

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/isbnlib/_msk.py in msk(isbn, separator)
     26     if len(ib) not in (10, 13) or ean is None:
     27         LOGGER.critical('%s is not a valid ISBN', isbn)
---> 28         raise NotValidISBNError(isbn)
     29
     30     isbn10 = False

NotValidISBNError: (7hgy6767) is not a valid ISBN

Si usamos un ISBN NO válido a una excepción NotValidISBNError.

Podemos convertir un ISBN10 a ISBN13 y viceversa:

In [1]: from isbnlib import to_isbn10, to_isbn13

In [2]: isbn10 = '8474860393'

In [3]: isbn13 = '9788474860399'

In [4]: noisbn = '7hgy6767'

In [5]: to_isbn10(isbn10)
Out[5]: '8474860393'

In [6]: to_isbn10(isbn13)
Out[6]: '8474860393'

In [7]: to_isbn13(isbn10)
Out[7]: '9788474860399'

In [8]: to_isbn13(isbn13)
Out[8]: '9788474860399'

In [9]: to_isbn10(noisbn)

In [10]: to_isbn13(noisbn)

Si convertimos del mismo tipo nos devuelve lo mismo, si es diferente nos devuelve una cadena con el valor convertido. Si el valor no es válido no devuelve nada (None).


Más información isbnlib

Retro

Lugares

Redes

Sistemas

Varios