字符串格式化,科学记数法在Python中浮动

时间:2013-07-15 15:53:25

标签: python string sorting math

我正在使用python,我很新手,可以使用我认为是字符串格式化问题的一些指导。

我有一个外部程序的输出,我想“翻译”成浮点数。输出包含两个数字,可能是也可能不是科学记数法,小数点后最多可以有15位数字(我在这里省略了)。

( - 1.040e-05 + 3.1676e-03j) 我希望这成为两个单独的数字 -0.00001040,0.0031676

目前无用形式的输出数据的其他示例如下 (0.0572636-0.419420j)将变为0.0572636,-0.419420 (0.000194 + 4.85091e-05j)

我的目标是取每对括号中包含的两个数字,将它们对齐并将它们加在一起。如果结果是科学记数法中的两个数字那么这很好,只要我能够对它们执行数学运算。此外,减号不需要在转换中存活,因为无论如何我都会消失它。如果这让事情变得更容易。

我目前采取的方法是一种相当复杂和混乱的方法。使用x.find找到'e',' - '和'+',然后解释应该提取字符串的哪些部分以形成数字。

我也不熟悉re模块,也不确定如何使用它来提取正确的格式。

任何帮助都会受到谴责

2 个答案:

答案 0 :(得分:3)

您可以像这样解析Python中的复数:

>>> c=complex('-1.040e-05+3.1676e-03j')
>>> c.real
-1.04e-05
>>> c.imag
0.0031676
>>>

它也适用于float和整数:

>>> f=complex('100.01')
>>> f.real
100.01
>>> f.imag
0.0
>>>

答案 1 :(得分:1)

您还可以使用优秀的numpy包:

import numpy as np
i = np.array(-1.040e-05+3.1676e-03j)
i.real

>> array(-1.04e-05)

i.imag

>> array(0.0031676)