Python: использование переменной при создании файла RTF - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь автоматизировать создание файла RTF, используя python с переменными. Я могу создать его с помощью приведенного ниже кода, но не могу понять, как использовать переменную «name» в команде file.write.

Я пытался прочитать это http://www.pindari.com/rtf1.html, но не могу найти ничего, что могло бы помочь. Надеюсь, кто-нибудь может указать мне правильное направление. Спасибо!

test = 'file.rtf'
name = "Chris"
file = open(test,'w')
file.write("""{\\rtf1\\ansi\\deff0
{\\colortbl;\\red0\\green0\\blue0;\\red255\\green0\\blue0;}
\\b Name: "%s" % (name,) \\b0\line
}""")
file.close()

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Вы неправильно понимаете, как работает % - используйте его вне строковых литералов, а не внутри. Так что не используйте это:

"""{\\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,) находится вне литерала (и подсветка кода правильно определяет это, он окрашен в черный цвет)

(примечание. Использование необработанной строки позволит избежать двойного экранирования от обратной косой черты)

0 голосов
/ 12 сентября 2018

Вместо использования «%» добавьте переменную в виде строки, например:

test = 'file.rtf'
name = "Chris"
file = open(test,'w')
file.write("""{\\rtf1\\ansi\\deff0
{\\colortbl;\\red0\\green0\\blue0;\\red255\\green0\\blue0;}
\\b Name: """ + str(name) + """ \\b0\line
}""")
file.close()

Надеюсь, это поможет вам.

...