有什么方法可以在字符串文字中使用变量值?

时间:2020-06-04 06:14:52

标签: python string

我正在使用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。

4 个答案:

答案 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)}}$?"