def read_isbn(fields): if '020' not in fields: return {} found = [] for line in fields['020']: if '\x1f' in line: for k, v in get_subfields(line, ['a', 'z']): m = re_isbn_and_price.match(v) if m: found.append(m.group(1)) else: m = re_isbn.match(v) if m: found.append(m.group(1)) else: m = re_isbn.match(line[3:-1]) if m: found.append(m.group(1)) ret = {} seen = set() for i in tidy_isbn(found): if i in seen: # avoid dups continue seen.add(i) if len(i) == 13: ret.setdefault('isbn_13', []).append(i) elif len(i) <= 16: ret.setdefault('isbn_10', []).append(i) return ret
def read_isbn(line): found = [] if line.find('\x1f') != -1: for k, v in get_raw_subfields(line, ['a', 'z']): m = re_isbn.match(v) if m: found.append(m.group(1)) else: m = re_isbn.match(line[3:-1]) if m: found = [m.group(1)] return map(str, tidy_isbn(found))