The reason this isn't working is that you are looking for the literal string "word". You're after:
text=re.sub(rf'\b{word}\b', '', text).strip()
This adds the actual value of word
into the string.
When working debugging regex, it helps to log the match so you can check it is doing what you expect.
import re;
a={'i', 'the', 'at', 'it'}
text='i want to jump the rope. i will do it tomorrow at 5pm. i love to jump the rope.'
for word in a:
print(f'Updating text, removing "{word}" from: "{text}"')
# text=re.sub(r'\bword\b', '', text).strip()
print(re.search(r'\bword\b', text))
Updating text, removing "at" from: "i want to jump the rope. i will do it tomorrow at 5pm. i love to jump the rope."
None
You can see that this is not finding a match, but if we simplify your expression:
print(re.search(word, text))
Updating text, removing "it" from: "i want to jump the rope. i will do it tomorrow at 5pm. i love to jump the rope."
<re.Match object; span=(35, 37), match='it'>
This does find a match, this suggests something is going wrong in your conversion to regex.
regex101 is really useful for diagnosing such things. Simply print the actual regex out, and test it against the input:
print(r'\bword\b')
print(rf'\b{word}\b')
\bword\b
\bthe\b
You probably also want to tidy up the white-space, you can do like this:
text=re.sub(rf'\b{word}\s?\b', '', text).strip()
want to jump rope. will do tomorrow 5pm. love to jump rope.