def create_issn(self, key, var_list=None): tmp_list = [] for var in var_list: # print(self.csvRow[var].strip()) tmp_elem = re.split('; |, ', self.csvRow[var].strip()) for i in range(len(tmp_elem)): """ Filter ISSN and ISBN only """ tmp_var_issn = self.remove_non_isbn_chars(tmp_elem[i].upper()) if issn.is_valid(tmp_var_issn): # print("Valid ISSN: " + tmp_var_issn) tmp_elem[i] = issn.format(tmp_var_issn) else: tmp_elem[i] = None # Filter all elements, remove text chars, parenthesis etc # print(tmp_elem) tmp_list += tmp_elem # print(tmp_list) tmp_list = list(filter(None, tmp_list)) # remove empty list elements # print(tmp_list) # No semi-colon, so do a join here. Cannot use the function to split semi-colons return '||'.join(filter(None, tmp_list)).strip()
def check_rows(groups): last_id = None errors = [] for group in groups: if not issn.is_valid(group[2]): errors.append(u"Invalid issn '{}'".format(group[2])) return errors
def validate_issn(item, errors): """ Checks ISSN for validity """ issn_list = item.get("issn") if issn_list is None: return for idx, single_issn in enumerate(issn_list): if not issn.is_valid(single_issn): errors.add(f"ISSN #{idx} [{single_issn}] isn't valid") formatted = issn.format(single_issn) if (formatted != single_issn): errors.add(f"ISSN #{idx} [{single_issn}] should be reformatted to [{formatted}]")
def validate_issn(item, errors): """ Checks ISSN for validity """ issn_list = item.get("issn") if issn_list is None: return for idx, single_issn in enumerate(issn_list): if not issn.is_valid(single_issn): errors.add(f"ISSN #{idx} [{single_issn}] isn't valid") formatted = issn.format(single_issn) if (formatted != single_issn): errors.add( f"ISSN #{idx} [{single_issn}] should be reformatted to [{formatted}]" )
def validate_issn(item, errors): """ Checks ISSN for validity """ issn_list = item.get("issn") if issn_list is None: return for idx, single_issn in enumerate(issn_list): if not issn.is_valid(single_issn): errors.add("ISSN #{idx} isn't valid".format(idx=idx)) formatted = issn.format(single_issn) if (formatted != single_issn): errors.add( "ISSN #{idx} ({single_issn}) should be reformatted to {formatted}" .format(idx=idx, single_issn=single_issn, formatted=formatted))
def check_issn(item, errors): """ Checks ISSN for validity """ issn_list = item.get("issn") if issn_list is None: return for idx, single_issn in enumerate(issn_list): if not issn.is_valid(single_issn): errors.add("ISSN #{idx} isn't valid".format( idx=idx )) formatted = issn.format(single_issn) if (formatted != single_issn): errors.add("ISSN #{idx} ({single_issn}) should be reformatted to {formatted}".format( idx=idx, single_issn=single_issn, formatted=formatted ))
def formatIdentifier(stringToFormat, type): """ This is used to format/check ISBN and ISSN numbers """ if type.lower() == "isbn": if isbn.is_valid(stringToFormat): log.debug("OK ISBN: {0}".format(stringToFormat)) return isbn.format(stringToFormat) else: log.warning("Malformed ISBN: {0}".format(stringToFormat)) return stringToFormat elif type.lower() == "issn": if issn.is_valid(stringToFormat): log.debug("OK ISSN: {0}".format(stringToFormat)) return issn.format(stringToFormat) else: log.warning("Malformed ISSN: {0}".format(stringToFormat)) return stringToFormat
def issn(field): """Check if an ISSN is valid. Prints the ISSN if invalid. stdnum's is_valid() function never raises an exception. See: https://arthurdejong.org/python-stdnum/doc/1.11/index.html#stdnum.module.is_valid """ # Skip fields with missing values if pd.isna(field): return # Try to split multi-value field on "||" separator for value in field.split("||"): if not stdnum_issn.is_valid(value): print(f"{Fore.RED}Invalid ISSN: {Fore.RESET}{value}") return