1

我正在使用我很新的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 模块,不确定如何使用它来提取正确的格式。

任何帮助将不胜感激

4

2 回答 2

3

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

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

它也适用于浮点数和整数:

>>> f=complex('100.01')
>>> f.real
100.01
>>> f.imag
0.0
>>>
于 2013-07-15T15:57:07.383 回答
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)
于 2013-07-15T15:59:18.320 回答