Вы можете попробовать косвенные утверждения, чтобы проверить слова перед своими номерами. Попробуйте использовать границы слов (\ b) в конце, чтобы ваше регулярное выражение совпадало только с числами в конце слова:
re.sub(r'(?<=\w+)\d+\b', '', line)
Надеюсь, это поможет
EDIT:
Извините за глюк, упомянутый в комментариях о совпадающих числах, которым также НЕ предшествуют слова. Это потому, что (извините еще раз) \ w соответствует буквенно-цифровым символам, а не только буквенным. В зависимости от того, что вы хотите удалить, вы можете использовать положительную версию
re.sub(r'(?<=[a-zA-Z])\d+\b', '', line)
только для проверки на наличие букв английского алфавита (вы можете добавить символы в список [a-zA-Z]) перед вашим номером или отрицательной версией
re.sub(r'(?<![\d\s])\d+\b', '', line)
, чтобы соответствовать чему-либо, что НЕ \ d (числа) или \ s (пробелы) перед вашим желаемым числом. Это также будет соответствовать знакам препинания.