diff --git a/idutils/normalizers.py b/idutils/normalizers.py index a4c8b07..b1ef1ab 100644 --- a/idutils/normalizers.py +++ b/idutils/normalizers.py @@ -54,11 +54,8 @@ def normalize_orcid(val): def normalize_gnd(val): """Normalize a GND identifier.""" - if val.startswith(gnd_resolver_url): - val = val[len(gnd_resolver_url) :] - if val.lower().startswith("gnd:"): - val = val[len("gnd:") :] - return "gnd:{0}".format(val) + m = gnd_regexp.match(val) + return f"gnd:{m.group(2)}" def normalize_urn(val): diff --git a/idutils/utils.py b/idutils/utils.py index 86f99c0..bdf26b8 100644 --- a/idutils/utils.py +++ b/idutils/utils.py @@ -82,8 +82,8 @@ """ gnd_regexp = re.compile( - r"(gnd:|GND:)?(" - r"(1|10)\d{7}[0-9X]|" + r"(gnd:|GND:|https?://d-nb\.info/gnd/|d-nb\.info/gnd/)?(" + r"1[012]?\d{7}[0-9X]|" r"[47]\d{6}-\d|" r"[1-9]\d{0,7}-[0-9X]|" r"3\d{7}[0-9X]" @@ -91,7 +91,6 @@ ) """See https://www.wikidata.org/wiki/Property:P227.""" -gnd_resolver_url = "http://d-nb.info/gnd/" urn_resolver_url = "https://nbn-resolving.org/" diff --git a/idutils/validators.py b/idutils/validators.py index df6e96f..d6d41d1 100644 --- a/idutils/validators.py +++ b/idutils/validators.py @@ -13,7 +13,6 @@ """Utility file containing ID validators.""" - import unicodedata from urllib.parse import urlparse @@ -237,9 +236,6 @@ def is_pmcid(val): def is_gnd(val): """Test if argument is a GND Identifier.""" - if val.startswith(gnd_resolver_url): - val = val[len(gnd_resolver_url) :] - return gnd_regexp.match(val)