Вы неправильно понимаете, как работает %
- используйте его вне строковых литералов, а не внутри. Так что не используйте это:
"""{\\rtf1\\ansi\\deff0
{\\colortbl;\\red0\\green0\\blue0;\\red255\\green0\\blue0;}
\\b Name: "%s" % (name,) \\b0\line
}"""
(потому что часть % (name,)
по-прежнему внутри строковый литерал)
Вместо этого используйте это:
"""{\\rtf1\\ansi\\deff0
{\\colortbl;\\red0\\green0\\blue0;\\red255\\green0\\blue0;}
\\b Name: %s \\b0\line
}""" % (name,)
Обратите внимание, что % (name,)
находится вне литерала (и подсветка кода правильно определяет это, он окрашен в черный цвет)
(примечание. Использование необработанной строки позволит избежать двойного экранирования от обратной косой черты)