Подтвердить что ты не робот

Как автоматически применять перенос ISBN?

У меня есть номера ISBN (10 цифр и 13 цифр) без тире. Теперь я ищу способ добавить эти штрихи автоматически.

Я нашел полезную информацию здесь: http://www.isbn.org/standards/home/isbn/international/hyphenation-instructions.asp

Но я не уверен, что это вообще возможно, потому что идентификатор издателя имеет случайную длину и без зная это, возможно, невозможно определить правильные позиции для тире.

Кто-нибудь знает, возможно ли это как-то?

Спасибо большое!

4b9b3361

Ответ 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 и многое другое, например, извлечение, очистку, и получить метаданные.

Это библиотека (которую вы можете использовать в своей программе), но она устанавливает несколько "скриптов", которые вы можете использовать из командной строки.