Маркировка имени файла с заданным числовым параметром - PullRequest
0 голосов
/ 15 ноября 2018

С помощью 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?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Если вы хотите, чтобы вывод был точно таким же, как в вашем примере:

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

EDIT

StringTemplate лучше, если вам нужно сделать несколько замен внутри строки (меньше беспорядочной конкатенации строк) и избежать дублирования, если вам нужно использовать один и тот же шаблон в разных местах кода. Но для последнего случая было бы лучше инкапсулировать генерацию имени файла в отдельную функцию.

StringTemplate имеет опции для указания CombinerFunction и InsertionFunction. InsertionFunction по умолчанию - TextString, поэтому нет необходимости в ToString.

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

И с помощью системы шаблонов можно сделать гораздо больше. Подробнее см. документы .

0 голосов
/ 15 ноября 2018

В Mathematica вы можете использовать StringTemplate:

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

Это создаст filename с числом из Association:

<|"n" -> 1234|>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...