Как автоматически применить дефис ISBN?
-
08-10-2019 - |
Вопрос
У меня есть номера ISBN (10 цифр и 13 цифр) без тире. Теперь я ищу способ добавить эти тире автоматически.
Я нашел некоторую полезную информацию здесь:http://www.isbn.org/standards/home/isbn/international/hyphenation-intructions.asp.
Но я не уверен, что это выполняется вообще, потому что идентификатор издателя имеет случайную длину, и не зная его, возможно, невозможно определить правильные позиции для тире.
Кто-нибудь знает, может ли это как-то?
Большое спасибо!
Решение
Вы можете вывести длину идентификатора издателя, если у вас есть Столы полного ассортимента.
Пример 1. ISBN 0141439564 (Penguin: Большие Надежды)
- Идентификатор группы 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.
Другие советы
Для Python вы можете использовать библиотеку Python-Stdnum., isbnid или Isbn_hyphenate.. Отказ Они могут переносить ISBNS и использовать таблицу диапазона, упомянутой в другом ответе.
Я написал следующую функцию JavaScript для гипната ISBNS (я знаю, что есть также Isbnjs., но это более компактно и легче включить в другие проекты, которые я думаю).
Взгляни на https://pypi.python.org/pypi/isbntools., это позволит вам «дефизировать» ISBN и гораздо больше, таких как извлечение, очищение, преобразование и получают метаданные.
Это библиотека (которую вы можете использовать в вашей программе), но она устанавливает несколько «сценариев», которые вы можете использовать из командной строки.