from html import escape from re import sub def j_replace(match): name = escape(match.group(0)) return f'{name}' def j_bod(body): return sub('[^ [\]]+', j_replace, body.strip()) defs = list(open('defs.txt')) print('
') for d in defs: name, body = d.split(None, 1) name = escape(name) print(f'
{name}
{j_bod(body)}

') print('
')