How to automatically apply ISBN hyphenation?
I wrote the following JavaScript function to hyphenate ISBNs (I know there is also isbnjs, but this is more compact and easier to include in other projects I think).
https://gist.github.com/aurimasv/6693537
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.
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.