Python 有没有办法在字符串文字中使用变量值?
我正在使用python生成LaTeX代码(说来话长,我需要生成120多个独特的测试) 这意味着我有很多字符串,它们有Python 有没有办法在字符串文字中使用变量值?,python,string,Python,String,我正在使用python生成LaTeX代码(说来话长,我需要生成120多个独特的测试) 这意味着我有很多字符串,它们有\或{或}等,所以我把它们变成了文本。然而,我还想让Python计算数字并把它们放进去。所以我可能有一个字符串,比如: r“函数$\exp{-1/(变量-x^2+y^2)}$的域是什么?”我要将其写入文件。但是我希望变量是一个随机的数值。问题不在于如何计算变量,而在于是否有一种干净的方法可以将变量放入字符串中,而无需执行以下操作: r“函数$\exp{-1/(“+str(变量)+r
\
或{
或}
等,所以我把它们变成了文本。然而,我还想让Python计算数字并把它们放进去。所以我可能有一个字符串,比如:
r“函数$\exp{-1/(变量-x^2+y^2)}$的域是什么?”
我要将其写入文件。但是我希望变量是一个随机的数值。问题不在于如何计算变量,而在于是否有一种干净的方法可以将变量放入字符串中,而无需执行以下操作:
r“函数$\exp{-1/(“+str(变量)+r“-x^2+y^2)}$”的域是什么?”
我会经常这样做,如果可行的话,那就太好了。我有Python 3.5.2。如果您的目标是不分解字符串,您可以这样做,用变量值替换变量,还可以在字符串中使用%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"))])
variable_list=[2,3]
''.join([e+str(variable_list[c]),如果cPython仍然支持字符串替换运算符%
:
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注释(顺便说一句,也是以%
开头),这将起作用。如果是这种情况,请将%
替换为%
您可以使用%格式
variable = 10
"What is the domain of the function $exp{-1/x + %d}." % (variable)
我非常喜欢,因为变量名出现在值最终将出现的地方
您可以使用原始的f字符串,但需要通过将它们加倍({{
)来避开大括号,这可能会让您在编写复杂的文本时感到困惑
要获取字符串是什么…$\exp{-1/(10-x^2+y^2)}$?:
变量=10
rf“什么是…$\exp{-1/({VARIABLE}-x^2+y^2}}}$?”
“所以我把它们变成了文字”听起来好像你对“字符串文字”的含义有点误解。听起来你可能得到了“原始字符串文字”和“字符串文字”混在一起。r'whatever'
是一个原始字符串文字,但'whatever'
仍然是一个字符串文字。是的,我意识到它们是一样的(正如我知道python不区分的),但我认为(假设?)每个人都知道我在如何输入它们方面的意思。.replace(“VARIABLE”,str(VARIABLE))
是一个更自然的解决方案。仅供参考:f字符串出现在3.6中。OP使用3.5.2。