Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to automatically apply ISBN hyphenation?

I've got ISBN numbers (10-digits and 13 digits) without the dashes. Now I'm looking for a way to add those dashes automatically.

I found some useful information here: http://www.isbn.org/standards/home/isbn/international/hyphenation-instructions.asp

But I'm not sure if it's doable at all, because the publisher identifier has a random length, and without knowing it, it's maybe not possible to determine the correct positions for the dashes.

Does anybody know if it's possible somehow?

Thanks a lot!

like image 895
thasmo Avatar asked Nov 11 '10 13:11

thasmo


People also ask

How do you hyphenate an ISBN?

In addition to identifying (a particular edition of) a book, ISBNs allow one to search for the book, both at libraries and bookstores. You can enter an ISBN number on this Wikipedia ISBN search page. Spaces and hyphens in the ISBN do not matter.

What is ISBN number in books?

The International Standard Book Number (ISBN) is a 13-digit number that uniquely identifies books and book-like products published internationally. The ISBN is intended for a monographic publication: text that stands on its own as a product, whether printed, audio or electronic.


2 Answers

You can deduce the length of the publisher identifier if you have the full range tables.

Example 1. ISBN 0141439564 (Penguin: Great Expectations)

  • The group identifier is 0 (English language).
  • The publisher ranges for this group are 00–19, 200–699, 7000–8499, 85000–89999, 900000-949999, and 9500000–9999999
  • The next two digits are 14, which is in the range 00–19, so the publisher has 2 digits.
  • So the hyphenated form is 0-14-143956-4

Example 2. ISBN 2253004227 (Poche: Germinal)

  • The group identifier is 2 (French language)
  • The publisher ranges for this group are 00–19, 200–349, 35000–39999, 400–699, 7000–8399, 84000–89999, 900000–949999, 9500000–9999999
  • The next three digits are 253, which is in the range 200–349, so the publisher has 3 digits
  • So the hyphenated form is 2-253-00422-7

You can check your algorithm at the Library of Congress's ISBN hyphenation tool.

like image 169
Gareth Rees Avatar answered Sep 23 '22 20:09

Gareth Rees


For Python, you can use the library python-stdnum, isbnid or isbn_hyphenate. They can hyphenate ISBNs, and use the range table mentioned in the other answer.

like image 40
Tor Klingberg Avatar answered Sep 25 '22 20:09

Tor Klingberg