一個Python要生成TECPLOT文件我用:撰寫格式發生器
import numpy as np
x, y = np.genfromtxt('./files.dat', unpack=True)
nb_value = x.size
x_splitted = np.split(x, nb_value // 1000 + 1)
y_splitted = np.split(y, nb_value // 1000 + 1)
with open('./test.dat', 'w') as f:
f.write('TITLE = \" YOUPI \" \n')
f.write('VARIABLES = \"x\" \"Y\" \n')
f.write('ZONE T = \"zone1 \" , I=' + str(nb_value) + ', F=BLOCK \n')
for idx in range(len(x_splitted)):
string_list = ["%.7E" % val for val in x_splitted[idx]]
f.write('\t'.join(string_list)+'\n')
for idx in range(len(y_splitted)):
string_list = ["%.7E" % val for val in y_splitted[idx]]
f.write('\t'.join(string_list)+'\n')
這裏是file.dat
一個例子:
-6.491083147394967334e-02 6.917197804459292456e+02
-6.489978349202699115e-02 6.871829941905543819e+02
-6.481115367048655151e-02 6.707292800160890920e+02
-6.479991205404790622e-02 6.756112033303363660e+02
-6.471117816968344205e-02 7.666798999627604871e+02
-6.469995628177811764e-02 7.819675271405360490e+02
此代碼工作,但我已經看到了,我應該使用.format()
而不是%
。這是運行:string_list = ["{}".format(list(val for val in y_splitted[idx]))]
,但不會與Tecplot,因爲我們需要7E
。
如果我嘗試:string_list = ["{.7E}".format(list(val for val in y_splitted[idx]))]
它根本不起作用。我得到了:AttributeError: 'list' object has no attribute '7E'
什麼是最好的方式來做我想做的事情?
@freakish:看起來你誤會了'%.7E'確實在字符串格式化操作。 –