#! /usr/bin/env python # coding: 'utf-8' #------------------------------------------------------------------------------- # Name: books # Purpose: # # Author: kmaruta # # Created: 09/03/2012 # Copyright: (c) kmaruta 2012 # Licence: <your licence> #------------------------------------------------------------------------------- def chk_code(code): if code == None: return 0 length = len(code) if length < 9 or length > 13 or length == 11: return 0 elif length == 10 and code[0:9].isdigit() != True: return 0 elif length != 10 and code.isdigit() != True: return 0 else: return length def get_jan(isbn_or_jan): if chk_code(isbn_or_jan) == 0: return '' jan_tmp = isbn_or_jan if len(jan_tmp) <= 10: jan_tmp = '978' + jan_tmp weight = 3 check_sum = 0 for i in range(12, 0, -1): check_sum = check_sum + int(jan_tmp[i - 1:i]) * weight weight = 4 - weight jan_tmp = jan_tmp[0:12] + str((10000 - check_sum) % 10) return jan_tmp def get_isbn(isbn_or_jan): length = chk_code(isbn_or_jan) if length == 0: return '' if length > 10: isbn_tmp = isbn_or_jan[3:13] else: isbn_tmp = isbn_or_jan check_sum = 0 for i in range(0, 9): check_sum = check_sum + int(isbn_tmp[i:i + 1]) * (10 - i) check_dgt = 11 - ((check_sum + 11) % 11) if check_dgt >= 11: isbn_tmp = isbn_tmp[0:9] + '0' elif check_dgt == 10: isbn_tmp = isbn_tmp[0:9] + 'X' else: isbn_tmp = isbn_tmp[0:9] + str(check_dgt) return isbn_tmp def get_jan_sprt(isbn_or_jan): jan = get_jan(isbn_or_jan) if jan == '': return '' if jan[4:6] < '20': cp = 6 elif jan[4:7] < '700': cp = 7 elif jan[4:8] < '8500': cp = 8 elif jan[4:9] < '90000': cp = 9 elif jan[4:10] < '950000': cp = 10 else: cp = 11 return jan[0:3] + '-' + jan[3:4] + '-' + jan[4:cp] + \ '-' + jan[cp:12] + '-' + jan[12:13] def get_mgz_jan(mgzn_cd): if chk_code(mgzn_cd) == 0: return '' jan_tmp = mgzn_cd if len(jan_tmp) <= 10: jan_tmp = '491' + jan_tmp weight = 3 check_sum = 0 for i in range(12, 0, -1): check_sum = check_sum + int(jan_tmp[i - 1:i]) * weight weight = 4 - weight jan_tmp = jan_tmp[0:12] + str((10000 - check_sum) % 10) return jan_tmp def main(): ## print get_mgz_jan('09751-06') ## print get_jan_sprt('430902514') print get_isbn('9764904563184') if __name__ == '__main__': main()
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question