Python脚本,用于复制.tex文件,并进行小的更改

2021-08-02 16:12:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一封乳胶格式的信。我想用python编写一个简短的脚本,它接受一个参数(收件人)并创建一个.tex文件,其中包含一般的字母格式和收件人。你知道吗

    from sys import argv
    script, addressee = argv
    file = open('newletter.tex', 'w')
    file.write("\begin{Document} Dear " + addressee + ", \n Greetings, how are you? Sincerely, Me \end{Document}")
    file.close()

有没有更好的功能写出大块的文字?另外,您可以看到.tex文件将包含编程语法—只要它被强制为字符串,python会忽略这一点吗?我需要强制一个大的块来串吗?提前谢谢!你知道吗

2条回答
网友
1楼 ·

如果直接在解释器中输入print "\begin...",您会注意到结果将忽略字符串前面的\b。这是因为\b是print语句(如果在3.x中则是函数)识别的字符(它恰好是一个backspace)。你知道吗

为了避免这种混淆,可以使用“raw string”,在python中,它由预挂起的“r”表示:

>>> a = "\begin"
>>> b = r"\begin"
>>> print a
egin
>>> print b
\begin
>>>

通常,当使用字符串来表示文件路径或任何可能包含\字符的其他内容时,应该使用原始字符串。你知道吗

至于在模板中插入信息,我建议使用format()函数,而不是字符串串联。为此,字符串如下所示:

r"\begin{{Document}} Dear {} \n Greetings, how are you? Sincerely, Me \end{{Document}}".format(addressee)

函数的参数(在本例中是addressee)将插入字符串中的每个{}。出于这个原因,花括号应该解释字面上必须转义,包括他们在重复。你知道吗

网友
2楼 ·

我将首先采用创建tex文件的方法字母.tex收件人设置为类似QXQ的东西。你知道吗

在python脚本中,我将整个文件读入内存。当你从一个文件中读取时,它会被当作一个原始字符串,并进行适当的转义。你知道吗

with open('letter.tex', 'r') as f:
   raw_letter = f.readlines()

然后做一个替换并将字符串写入一个文件。你知道吗

raw_letter.replace("QXQ_ADDRESSEE_QXQ", newname)
with open('newletter.tex', 'w') as f:
  f.write(raw_letter)

相关问题