Python ISBN号の概要、チェックビット計算、10ビット-13ビット変換、検証、ハイフン、および共通ライブラリisbnid、isbnlib、isbntoolsの使用


ISBNの概要
仕事の都合でISBNがよく使われる.ISBNは国際標準書番号の略称(International Standard Book Number)で、主に文献、すなわち文献を識別する「身分証明書番号」に用いられ、ISBN番号を調べることで唯一の本を得ることができる.ISBNは大きく10位と13位のISBNに分けられ、2007年1月1日までに10位のISBN、その後に13位のISBNを用いた.両者の最も顕著な違いは、1つは、10ビットISBNの前に「978」または「979」を加えることであり、2つは、チェックビットのアルゴリズムが変化したことである.
ISBNは国際商品コードのサブセットであり、一般的に本の裏表紙に見えるバーコードがISBNである.それに伴って最後のチェックビットも変化した.
現行の13位ISBNを例にとると、9787111267768は『Python学習マニュアル』第3版のISBN号である.ISBN番号は-で区切ることができ、5段に分けることができます.978-7-111-26776-8第1段、978は商品コードである.図書は一般的に978で、新しいのは979で、これは固定的な3位です.第2段、7は国、言語または地域コードである.中国は7で、国別コードは1-5位で、言語や国によって区分され、国別コードが短いほど後で使える番号が多くなり、代表できる出版社や図書が多くなる.第3セグメント、111は出版社コードである.出版社コードは2-5ビットで、コードが短いほど出版できる本が多くなります.例えば111が機械工業出版社のコードネームなので、978-7-111のようなISBNを見ると機械工業出版社が出版した本であることがわかります.第4セグメント、26776は、書順符号化である.ある本の出版社でのコードを指し、直接本を確定することができる.第5セグメント、8はチェックビットです.チェックビットは1ビットのみです.
10ビットISBN検査ビット計算
10ビットISBNのチェック方法は、978と最後のビットを除いて、9ビットの数字を左から右にかけて、それぞれ10から2に乗算した後、和を求め、得られた和を11に対して整除し、残数(すなわち11に対して型取り演算を行う)を得、さらに11で残数を減算することでチェックビットとなる.結果が10であればXで表し,剰余数は0,チェックビットは0である.
例えば、13ビットISBN 9787111267768で10ビットISBNチェックビットの演算を行い、商品コード978とチェックビット8を削除し、中間の9ビットは7111266776である.7*10+1*9+1*8+1*7+2*6+6*5+7*4+7*3+6*2、および197197%111011-101、すなわち上記ISBNは10ビットのISBNで7111267761であるべきである
13ビットISBN検査ビット計算
13ビットISBNのチェックはパリティを採用している.方法は10ビットチェックビットと類似している.最後のビットのチェックボックスを外し、最初の12ビットの数字を保持します.12桁の数字は左から右へ、奇数桁は1、偶数桁は3を掛けて、それから和を求めて、得られた和は更に10に対して整除して、残数(つまり11に対して型取り演算を行う)を得て、更に10で残数を減らして検査位で、残数は0検査位で0です.13ビットISBNチェックビットは0〜9のみである.
例えば、13ビットISBN 9787111267768で13ビットISBNチェックビットの演算を行い、チェックビット8を除いた残りの12ビットは978711126776である.9*1+7*3+8*1+7*3+1*1+1*3+1*1+2*3+6*1+7*3+7*1+6*3、および122122%10210-28、すなわち上記ISBNは13ビットのISBNで9787111267768であるべきである
ISBN共通Pythonライブラリ
普通ならハイフネーション付きのISBNははっきり見えますが、みんな怠け者なので、今は各サイトにほとんどハイフネーションがないので、13桁の数字なので、常に変換が必要です.
ネット上にはPython版のISBN処理コードがたくさんありますが、機能は比較的簡単で、例えば上記の13ビットのISBNセグメントは実現するのが面倒なので、できるだけ既製のライブラリを使いましょう.PyPIで調べたところ主流はisbnid,isbnlib,isbntools
機能が最も簡単なのはisbnidで、機能が強いのはisbnlibとisbntoolsで、isbntoolsはisbnlibをカーネルとして使用して、コマンドラインツールを加えて、コードではなく直接使用することができます.
isbnid
インストール:
pip install isbnid

一般的な使用方法は次のとおりです.
#    ,   isbn
import isbn

#      ,   ISBN   ,     ISBN      。   13 ISBN,  10 ISBN       。
isbnid = isbn.ISBN("9787111267768")

# 10 ISBN  
isbnid.isbn10()
#   '7111267761'

# 13 ISBN  
isbnid.isbn13()
#   '9787111267768'

# URN  
isbnid.urn()
#   'URN:ISBN:9787111267768'

# ISBN    
isbnid.hyphen()
#   '978-7-111-26776-8'

# ISBN  
isbnid.valid("'978-7-111-26776-8'")
#   True

isbnlib
インストール:
pip install isbnlib

一般的な使用方法は次のとおりです.
#    ,   isbnlib
import isbnlib

# 13 ISBN  
isbnlib.is_isbn13("9787111267768")
#   True

# 10 ISBN  
isbnlib.is_isbn10("7111267761")
#   True

# 10 ISBN   13 
isbnlib.to_isbn13("7111267761")
#   '9787111267768'

# 13 ISBN   10 
isbnlib.to_isbn10("9787111267768")
#   '7111267761'

#       ISBN ,                 。
isbnlib.canonical("978-7-111-26-7-76-8")
#   '9787111267768'

# ISBN    
isbnlib.mask('9787111267768', separator='-')
#   '978-7-111-26776-8'

#   ISBN        
isbnlib.info('9787111267768')
#"China, People's Republic"

#  ISBN 
isbnlib.get_isbnlike('   ,ISBN:9787111267768  ', level='normal')
#   ['9787111267768']

#      
isbnlib.clean('   ,ISBN:9787111267768  ')
#   'ISBN9787111267768'
isbnlibには他にも強力な機能がたくさんありますが、多くはグーグルやアメリカの図書にしか使えません.