用给定的数值参数标记文件名

Labeling the name of a file with a given numerical parameter

使用 python 我可以通过以下方式保存带有给定参数 t 名称标签的文件

import matplotlib.pyplot as plt
fig=plt.figure(1)
plt.plot([1,2,3,4])
t=0.1
fig.savefig("filename%f.png" % t)

保存图形的名称类似于"filename0.1000.png"。 我怎样才能对 wolfram mathematica 做同样的事情? 换句话说, %f 的 mathematica 等价物是什么?

Mathematica 中你可以使用 StringTemplate:

filenameTemplate = StringTemplate["filename`n`.dat"];
filename = filenameTemplate[<|"n" -> 1234|>]
(* "filename1234.dat" *)

这将创建一个 filename,其中的数字来自 Association:

<|"n" -> 1234|>

如果您希望输出与示例中的输出完全相同:

t = 0.1;
"filename" <> ToString@NumberForm[t, {1, 4}] <> ".png"
(* filename0.1000.png *)

编辑

StringTemplate 如果您需要在字符串中进行多次替换(不那么混乱的字符串连接)会更好,如果您需要在代码的不同位置使用相同的模板,则可以避免一些重复。但对于后一种情况,最好将文件名生成封装在一个单独的函数中。

StringTemplate 有指定 CombinerFunctionInsertionFunction 的选项。默认的 InsertionFunctionTextString 所以不需要 ToString.

t = 0.1;
filenameTemplate = StringTemplate["filename`t`.png"];
filename = filenameTemplate[<|"t" -> NumberForm[t, {1, 4}]|>]
(* filename0.1000.png *)

模板系统还可以做更多的事情。有关详细信息,请参阅 docs