Python 浮动是否有一种字符串格式,总是以0.x开头?

Python 浮动是否有一种字符串格式,总是以0.x开头?,python,string,python-3.x,format,string-formatting,Python,String,Python 3.x,Format,String Formatting,在python中,我需要一个非常特定的浮点字符串格式 我需要所有数字都像这样: 0.313575791515242E+005 0.957214231058814E+000 0.102484469467859E+002 0.251532655168561E-001 0.126906478919395E-002 -0.469847611408333E-003 0.962200000000000E+001 它们总是以0.x开始,小数点后有15位,以指数中的3位结束 我可以用python来做这个吗?

在python中,我需要一个非常特定的浮点字符串格式

我需要所有数字都像这样:

0.313575791515242E+005
0.957214231058814E+000
0.102484469467859E+002
0.251532655168561E-001
0.126906478919395E-002
-0.469847611408333E-003
0.962200000000000E+001
它们总是以0.x开始,小数点后有15位,以指数中的3位结束

我可以用python来做这个吗?我试图查看文档中的字符串格式,但不知道如何设置

我试过这个:

>>> number = 9.622
>>> print(f'{number:.15E}')
9.622000000000000E+00
这非常接近,但我仍然需要指数中的前导0和3位数。它必须是这样的:

0.313575791515242E+005
0.957214231058814E+000
0.102484469467859E+002
0.251532655168561E-001
0.126906478919395E-002
-0.469847611408333E-003
0.962200000000000E+001

感谢您的帮助

不确定指数之前的
-/+
逻辑是什么,但这会给你一个好的开始,我希望:

def format(n):
    p = 0
    while n <= -1 or n >= 1:
        n = n / 10.0
        p += 1
    # p could be >= 100 at this point, but we can't do anything
    return "{:.15f}E{:+04d}".format(n, p)
def格式(n): p=0 当n=1时: n=n/10.0 p+=1 #此时p可能大于等于100,但我们什么也做不了 返回“{:.15f}E{:+04d}”。格式(n,p)
一些出色的黑客技术。使用常用的Python科学符号字符串格式,然后通过将所有数字移位1并将指数递增1来修改结果

import re

def sci_after_point(number, significant_digits=15, exponent_digits=3):
    '''Returns the number in scientific notation
    with the significant digits starting immediately after the decimal point.'''

    number_sci = f'{number:.{significant_digits-1}E}'

    sign, lead, point, decimals, E, exponent =\
    re.match(r'([-+]?)(\d)(\.)(\d+)(E)(.*)', number_sci).groups()

    incremented_exponent = int(exponent) + 1
    incremented_exponent = f"{incremented_exponent:+0{exponent_digits + 1}}"

    return sign + '0' + point + lead + decimals + E + incremented_exponent

sci_after_point(-0.313575791515242E005)
Out: '-0.313575791515242E+005'

“我可以用python来做这件事吗?”——如果最坏的情况发生了,编写自己的函数来做这件事应该不会太难,对吧?试着看看上面的答案page@Bazingaa哪一个具体回答了这个问题?我不知道这就是为什么我说试试。也许OP从一些方法中得到了一些想法。这就是原因,我没有将其标记为重复“尝试”是不明确的,可能意味着“前面的问题提供了解决方案,所以请尝试查看”,而不是“我不知道解决方案是否在这里,但尝试阅读所有答案,您可能会发现一些有用的东西”。太好了!谢谢你的提示。是的,它也适用于负指数,因为逗号后的第一个数字应始终为非零。我将把它添加到函数中。非常感谢。