Как автоматически применять перенос ISBN?
У меня есть номера ISBN (10 цифр и 13 цифр) без тире.
Теперь я ищу способ добавить эти штрихи автоматически.
Я нашел полезную информацию здесь:
http://www.isbn.org/standards/home/isbn/international/hyphenation-instructions.asp
Но я не уверен, что это вообще возможно, потому что
идентификатор издателя имеет случайную длину и без
зная это, возможно, невозможно определить
правильные позиции для тире.
Кто-нибудь знает, возможно ли это как-то?
Спасибо большое!
Ответы
Ответ 1
Вы можете указать длину идентификатора издателя, если у вас есть полные таблицы диапазонов.
Пример 1. ISBN 0141439564 (Пингвин: большие ожидания)
- Идентификатор группы равен 0 (английский язык).
- Диапазон издателей для этой группы: 00-19, 200-699, 7000-8499, 85000-89999, 900000-949999 и 9500000-9999999.
- Следующие две цифры: 14, которые находятся в диапазоне 00-19, поэтому издатель имеет 2 цифры.
- Таким образом, дефисная форма: 0-14-143956-4
Пример 2. ISBN 2253004227 (Poche: Gérminal)
- Идентификатор группы - 2 (французский язык)
- Диапазон издателей для этой группы: 00-19, 200-349, 35000-39999, 400-699, 7000-8399, 84000-89999, 900000-949999, 9500000-9999999.
- Следующие три цифры - 253, которые находятся в диапазоне 200-349, поэтому издатель имеет 3 цифры
- Таким образом, переносимая форма 2-253-00422-7
Вы можете проверить свой алгоритм в Библиотеке Конгресса инструмент переноса переносов ISBN.
Ответ 2
Для Python вы можете использовать библиотеку python-stdnum, isbnid или isbn_hyphenate. Они могут переписывать ISBN и использовать таблицу диапазонов, упомянутую в другом ответе.
Ответ 3
Я написал следующую функцию JavaScript для рассылок ISBN (я знаю, что есть также isbnjs, но это более компактно и проще включать в других проектах, я думаю).
https://gist.github.com/aurimasv/6693537
Ответ 4
Взгляните на https://pypi.python.org/pypi/isbntools, это позволит вам "дешифровать" ISBN и многое другое, например, извлечение, очистку, и получить метаданные.
Это библиотека (которую вы можете использовать в своей программе), но она устанавливает несколько "скриптов", которые вы можете использовать из командной строки.