def ampersands(string):
"""Allow terminated entities but escape wild ampersands."""
splits = string.split('&')
if len(splits) == 1:
return string
result = splits[0]
for split in splits[1:]:
if split:
for char in split:
if char.isspace():
result += "&" + split; break
elif char == ';':
result += "&" + split; break
else: # end of split
result += "&" + split
else: # empty split
result += "&"
return result