import re
pattern = re.compile(r"(\d(?:\s?\d)?\s?\.)\s?((?:j\s?a\s?n|f\s?e\s?b\s?r)\s?u\s?a\s?r\s?y|m\s?a\s?(?:r\s?c\s?h|y)|a\s?p\s?r\s?i\s?l|j\s?u\s?(?:n\s?e|l\s?y)|a\s?u\s?g\s?u\s?s\s?t|o\s?c\s?t\s?o\s?b\s?e\s?r|(?:s\s?e\s?p\s?t|n\s?o\s?v|d\s?e\s?c)e\s?m\s?b\s?e\s?r)\s?(\d\s?\d\s?\d\s?\d)", re.I)
strs = ["1 . J U L Y 1 9 5 0", "1 8 . A P R I L 1 9 8 0", "Hello world, today is: 2 4 . J A N U A R Y 2 0 0 0"]
for text in strs:
print(re.sub(pattern, lambda x: f'{"".join(x.group(1).split())} {"".join(x.group(2).split())} {"".join(x.group(3).split())}', text))
aW1wb3J0IHJlCnBhdHRlcm4gPSByZS5jb21waWxlKHIiKFxkKD86XHM/XGQpP1xzP1wuKVxzPygoPzpqXHM/YVxzP258ZlxzP2Vccz9iXHM/cilccz91XHM/YVxzP3Jccz95fG1ccz9hXHM/KD86clxzP2Nccz9ofHkpfGFccz9wXHM/clxzP2lccz9sfGpccz91XHM/KD86blxzP2V8bFxzP3kpfGFccz91XHM/Z1xzP3Vccz9zXHM/dHxvXHM/Y1xzP3Rccz9vXHM/YlxzP2Vccz9yfCg/OnNccz9lXHM/cFxzP3R8blxzP29ccz92fGRccz9lXHM/YyllXHM/bVxzP2Jccz9lXHM/cilccz8oXGRccz9cZFxzP1xkXHM/XGQpIiwgcmUuSSkKc3RycyA9IFsiMSAuIEogVSBMIFkgMSA5IDUgMCIsICIxIDggLiBBIFAgUiBJIEwgMSA5IDggMCIsICJIZWxsbyB3b3JsZCwgdG9kYXkgaXM6IDIgNCAuIEogQSBOIFUgQSBSIFkgMiAwIDAgMCJdCgpmb3IgdGV4dCBpbiBzdHJzOgoJcHJpbnQocmUuc3ViKHBhdHRlcm4sIGxhbWJkYSB4OiBmJ3siIi5qb2luKHguZ3JvdXAoMSkuc3BsaXQoKSl9IHsiIi5qb2luKHguZ3JvdXAoMikuc3BsaXQoKSl9IHsiIi5qb2luKHguZ3JvdXAoMykuc3BsaXQoKSl9JywgdGV4dCkpCg==