日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python ISBN号概述,校验位计算,10位-13位转换,验证,连字符,及常用库isbnid,isbnlib,isbntools的使用

發(fā)布時間:2024/3/12 python 832 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python ISBN号概述,校验位计算,10位-13位转换,验证,连字符,及常用库isbnid,isbnlib,isbntools的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ISBN概述
因為工作原因經(jīng)常需要用到ISBN。ISBN是國際標準書號的簡稱(International Standard Book Number),主要用于標識文獻,也即是文獻的“身份證號”,通過查詢ISBN號可以獲取唯一的某一種書。
ISBN大致可以分為10位和13位ISBN,在2007年1月1日前用的是10位ISBN,之后用的13位ISBN。兩者最顯著的區(qū)別一是在10位ISBN前加上“978”或“979”,二是校驗位的算法發(fā)生了變化。

ISBN算是國際商品編碼的一個子集,一般在書的封底看見的條形碼就是ISBN,其實我們看到10位的ISBN的書時,封底上的ISBN也是帶978的,只不過以前978是默認的,當10位ISBN編號快用光的時候,又新增了979開頭的ISBN,這時候為了區(qū)分編號,只能帶上開始的這三位商品編碼了,隨之而來的最后一位校驗位也發(fā)生了變化。

以現(xiàn)行的13位ISBN為例:9787111267768
這是《Python學習手冊》第三版的ISBN號。ISBN號可以用-隔開,可以分為5段。
978-7-111-26776-8
第一段,978為商品代碼。圖書一般就是978,新點的是979,這是固定的3位。
第二段,7為國家、語言或者地區(qū)代碼。中國為7,國別碼為1-5位,按語言或國家劃分,國別碼越短后面能用的號碼就越多,也即能代表的出版社和圖書就越多。
第三段,111為出版社編碼。出版社編碼2-5位,編碼越短說明能出版的書就越多。比如111就是機械工業(yè)出版社的代號,所以看到978-7-111這樣的ISBN就說明都是機械工業(yè)出版社出版的書。
第四段,26776為書序編碼。就指的是某本書在出版社的編碼,直接能夠確定到書。
第五段,8為校驗位。校驗位只有1位。

10位 ISBN檢驗位計算
10位ISBN的校驗方法為,去掉978和最后一位的校驗位,9位數(shù)字從左到右,分別與10到2相乘,然后求和,得到的和再對11進行整除,得到余數(shù)(即對11進行取模運算),再用11減去余數(shù)即為校驗位。如果結果為10用X表示,余數(shù)為0,校驗位位0。

例如,用13位ISBN9787111267768進行10位ISBN校驗位的運算,去掉商品碼978和校驗位8,中間的9位為711126776。710+19+18+17+26+65+74+73+6*2,和為197,197%11為10,11-10為1,即上述ISBN用10位ISBN表示應該為7111267761

13位 ISBN檢驗位計算
13位ISBN的校驗采用奇偶校驗。方法與10位校驗位類似。去掉最后一位的校驗位,保留前12位數(shù)字。12位數(shù)字從左到右,奇數(shù)位乘1,偶數(shù)位乘3,然后求和,得到的和再對10進行整除,得到余數(shù)(即對11進行取模運算),再用10減去余數(shù)即為校驗位,余數(shù)為0校驗位即為0。13位ISBN校驗位只有0-9。

例如,用13位ISBN9787111267768進行13位ISBN校驗位的運算,去掉校驗位8,其余的12位為978711126776。91+73+81+73+11+13+11+23+61+73+71+63,和為122,122%10為2,10-2為8,即上述ISBN用13位ISBN表示應該為9787111267768

ISBN常見Python庫
正常的話帶連字符-的ISBN看起來很清晰,但是大家都懶嘛,現(xiàn)在各大網(wǎng)站基本上都沒有連字符-,就13位數(shù)字,所以經(jīng)常需要轉換。

網(wǎng)上有很多Python版的ISBN處理代碼,但是功能相對比較簡單,比如上面提到的13位ISBN分段,實現(xiàn)起來就比較麻煩,所以盡量還是用現(xiàn)成的庫吧。在PyPI上查了下,主流的有isbnid,isbnlib,isbntools

功能最簡單的是isbnid,功能強大的有isbnlib和isbntools,isbntools使用isbnlib作為內(nèi)核,加入了命令行工具,直接可以使用而不是編碼。

isbnid
安裝:

pip install isbnid
1
常見使用功能如下:

導入庫,庫名為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
1
常見使用功能如下:

導入庫,庫名為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’

生成純數(shù)字的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還有很多其他強大的功能,不過大多只能用于谷歌或者美國的圖書。

總結

以上是生活随笔為你收集整理的Python ISBN号概述,校验位计算,10位-13位转换,验证,连字符,及常用库isbnid,isbnlib,isbntools的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。