Python:实现ISBN的校验和转换

解决方法

import pyisbn

m_isbn = ‘750081908X’;
if(len(m_isbn)==10 or len(m_isbn)==13): ## 首先要符合长度
##    去除可能出现的错误字符
##    包括全角符号"X",罗马数字10"Ⅹ"
##    必要时需要引入全角转半角函数
    m_isbn = m_isbn.replace('X','X'); 
    m_isbn = m_isbn.replace('Ⅹ','X'); 

    if(pyisbn.validate(m_isbn)):
##        使用转换函数会得到另一个结果
        m_isbn2 = pyisbn.convert(m_isbn);
##        根据原始长度决定哪个是ISBN-13,哪个是ISBN-10
        if(len(m_isbn)==10):
            m_isbn_13 = m_isbn2;
            m_isbn_10 = m_isbn;
        else:
            m_isbn_13 = m_isbn;
            m_isbn_10 = m_isbn2;