我正在使用python生成LaTeX代码(长话大说-我需要进行120多次独特的考试)。
这意味着我有很多带有\
或{
或}
等的字符串。因此,我将它们设为文字。但是,我也想让Python计算数字并将其放入。因此,我可能会有类似以下的字符串:
我要写入文件的r"What is the domain of the function $\exp{-1/(VARIABLE - x^2+y^2)}$?"
。但我希望VARIABLE
是一个随机数值。问题不是如何计算VARIABLE,而是有一种干净的方法将VARIABLE放入字符串中,而无需类似以下内容:
r"What is the domain of the function $\exp{-1/(" + str(VARIABLE) + r"- x^2+y^2)}$?"
我将做很多事情,因此,如果可行,那就太好了。我有Python 3.5.2。
答案 0 :(得分:3)
Python still 支持字符串替换运算符%
:
r"What is ... $\exp{-1/(%s - x^2+y^2)}$?" % str(VARIABLE)
如果您知道变量的类型,则可以更加具体,例如:
r"What is ... $\exp{-1/(%f - x^2+y^2)}$?" % VARIABLE
可以一次替换多个变量:
r"$\mathrm{x}^{%i}_{%i}$" % (VAR1, VAR2)
只要您的字符串中没有LaTeX注释(顺便说一句也以%
开头),该选项就可以使用。如果是这种情况,请将%
替换为%%
。
答案 1 :(得分:0)
如果您的目标是不拆分字符串,则可以执行以下操作以用变量值替换变量,并且还可以在字符串中使用%s:
r"What is the domain of the function $\exp{-1/(VARIABLE - x^2+y^2)}$?".replace("VARIABLE", str(VARIABLE))
如果您需要多个值,可以使用以下方法:
variable_list = [2, 3]
''.join([e+str(variable_list[c]) if c<len(variable_list) else str(e) for c,e in enumerate(r"What is the domain of the function $\exp{-1/(VARIABLE - x^2+y^2)}$?".split("VARIABLE"))])
答案 2 :(得分:0)
您也许可以使用%格式
variable = 10
"What is the domain of the function $exp{-1/x + %d}." % (variable)
答案 3 :(得分:0)
我非常喜欢f-strings,因为变量名出现在值最终会出现的位置。
您可以使用原始的f字符串,但是您需要通过将花括号加倍({{
)来避开花括号,如果您要编写复杂的LaTex,这可能会造成混淆。
要获取字符串什么是... $ \ exp {-1 /(10-x ^ 2 + y ^ 2)} $?:
VARIABLE = 10
rf"What is ... $\exp{{-1/({VARIABLE} - x^2+y^2)}}$?"