import re
exceptions = ['1st','2nd','10th','100th','1st nation','xlr8','5pin','h20', '12th'] # '12th' added
exception_rx = '|'.join(map(re.escape, exceptions))
generic_rx = r'(?<=\d)(?=[^\d\s])|(?<=[^\d\s])(?=\d)'
rx = re.compile(rf'({exception_rx})|{generic_rx}', re.I)
string_lst = ['1ST DEF 100CD','ABC 1ST 100CD','WEST 12TH APARTMENT']
for s in string_lst:
print(rx.sub(lambda x: x.group(1) or " ", s))
aW1wb3J0IHJlCgpleGNlcHRpb25zID0gWycxc3QnLCcybmQnLCcxMHRoJywnMTAwdGgnLCcxc3QgbmF0aW9uJywneGxyOCcsJzVwaW4nLCdoMjAnLCAnMTJ0aCddICMgJzEydGgnIGFkZGVkCmV4Y2VwdGlvbl9yeCA9ICd8Jy5qb2luKG1hcChyZS5lc2NhcGUsIGV4Y2VwdGlvbnMpKQpnZW5lcmljX3J4ID0gcicoPzw9XGQpKD89W15cZFxzXSl8KD88PVteXGRcc10pKD89XGQpJwpyeCA9IHJlLmNvbXBpbGUocmYnKHtleGNlcHRpb25fcnh9KXx7Z2VuZXJpY19yeH0nLCByZS5JKQoKc3RyaW5nX2xzdCA9IFsnMVNUIERFRiAxMDBDRCcsJ0FCQyAxU1QgMTAwQ0QnLCdXRVNUIDEyVEggQVBBUlRNRU5UJ10KZm9yIHMgaW4gc3RyaW5nX2xzdDoKICAgIHByaW50KHJ4LnN1YihsYW1iZGEgeDogeC5ncm91cCgxKSBvciAiICIsIHMpKQ==