首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Python中的指数中提取数字

从Python中的指数中提取数字
EN

Stack Overflow用户
提问于 2017-06-12 06:26:41
回答 4查看 2K关注 0票数 0

大家好/巨蟒大师

我想知道如何完成以下任务,到目前为止我还没有完成。

我现在拥有的是:

Q1 = 20e-6

这是一个指数,如果你打印(Q1),它会显示: 2e-5,这很好。从数学上讲。

然而,我想做的是:

我希望Q1只打印数字20,基于这是否是e-6,然后打印uC或如果这是e-9,则打印nC。

下面是一个更好理解的例子:

Q1=20e-6

当我运行打印(Q1)显示:20 Q1。

第二季=20e-9

当我运行打印(Q2)显示:20 Q2。

你能帮我弄清楚吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-06-12 09:37:45

我建议您使用si-prefix

您可以使用pip安装它

代码语言:javascript
复制
sudo pip install si-prefix

然后你可以使用这样的东西:

代码语言:javascript
复制
from si_prefix import si_format

# precision after the point
# char is the unity's char to be used
def get_format(a, char='C', precision=2):
    temp = si_format(a, precision)

    try:
        num, prefix = temp.split()
    except ValueError:
        num, prefix = temp , ''

    if '.' in num:
        aa, bb = num.split('.')
        if int(bb) == 0:
            num = aa

    if prefix:
        return num + ' ' + prefix + char
    else:
        return num


tests = [20e-6, 21.46e05, 33.32e-10, 0.5e03, 0.33e-2, 112.044e-6]
for k in tests:
    print get_format(k)

输出:

代码语言:javascript
复制
20 uC
2.15 MC
3.33 nC
500
3.30 mC
112.04 uC
票数 0
EN

Stack Overflow用户

发布于 2017-06-12 06:33:40

只需使用str.replace替换指数:

代码语言:javascript
复制
q1 = 'XXXXXX'
q1 = q1.replace('e-9', 'nC').replace('e-6', 'uC')
print(q1)
票数 2
EN

Stack Overflow用户

发布于 2017-06-12 06:29:56

您可以通过拆分字符串来尝试:

代码语言:javascript
复制
'20e-9'.split('e')

给出

代码语言:javascript
复制
['20', '-9']

从那时起,您可以在这些值之间插入任何您想要的内容:

代码语言:javascript
复制
('u' if int(a[1]) > 0 else 'n').join(a)

(与a = '20e-9'.split('e'))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44492650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档