如何为下面给出的代码片段添加“格式”?

时间:2019-03-29 07:40:11

标签: python python-2.7

   zip(a,b,c,d)
   with open('output.dat', 'w') as f:
   print >>f, ("%-25s %-25s %-25s %s" %(x, y, z, k))
   writer = csv.writer(f, delimiter='\t')
   writer.writerows(zip(a,b,c,d))

此代码的输出类似于

51715.505899065996  2724172.4436709681  3081070.212397085   3419080.1274145059 

我想用指数的形式写这些数字并四舍五入,例如对于第一个输出

5.172E4 ........

我该怎么做?

2 个答案:

答案 0 :(得分:5)

您可以使用科学计数法格式,如下所示:

num = 51715.505899065996
# .3 to keep 3 digit in fractional part
print('%.3e' % num)
print('{:.3e}'.format(num))
# 5.172e+04

对于您的情况,您可以按地图使用格式,我将abcd视为列表,我不知道我是否知道对此有误解:

a = [51715.505899065996, 2724172.4436]
b = [2724172.4436709681, 81070.2123]
c = [3081070.212397085, 715.50589906599]
d = [3419080.1274145059, 9080.12741450]
zip(a,b,c,d)
with open('output.dat', 'w') as f:
    # print >>f, ("%-25s %-25s %-25s %s" %(x, y, z, k))
    writer = csv.writer(f, delimiter='\t')
    for A, B, C, D in zip(a,b,c,d):
        writer.writerow(map(lambda x:'{:.3e}'.format(x), (A,B,C,D)))

希望它对您有帮助。

答案 1 :(得分:2)

print('%.xe' % y)print('{:.xe}'.format(y)将以科学计数法打印数字y,十进制精度为x

例如,print('%.2e' % 12)将打印1.20e+.01