Python:将字符串对转换为复数

时间:2014-01-21 13:58:45

标签: python type-conversion complex-numbers

这是我的复数:我正在从文件中检索它。

        re, im = line[11:13]
        print( re ) # -4.04780617E-02
        print( im ) # +4.09889424E-02

目前它只是一对弦乐。 如何将这些组合成一个复数?

我已经尝试了五次。

        z = complex( re, im )
        # ^ TypeError: complex() can't take second arg if first is a string

        z = complex( float(re), float(im) )
        # ^ ValueError: could not convert string to float: re(tot)

        z = float(re) + float(im) * 1j
        # ^ ValueError: could not convert string to float: re(tot)

        z = complex( "(" + re + im + "j)" )
        # ValueError: complex() arg is a malformed string

        z_str = "(%s%si)" % (re, im) # (-4.04780617E-02+4.09889424E-02i)
        z = complex( z_str )
        # ValueError: complex() arg is a malformed string

3 个答案:

答案 0 :(得分:5)

Python使用'j'作为虚部的后缀:

>>> complex("-4.04780617E-02+4.09889424E-02j")
(-0.0404780617+0.0409889424j)

在你的情况下,

z_str = "(%s%sj)" % (re, im) # (-4.04780617E-02+4.09889424E-02i)
z = complex( z_str )

答案 1 :(得分:2)

z = complex(float(re), float(im))

答案 2 :(得分:0)

要将字符串转换为复数,您需要做的就是

c = complex(str)

其中str是一个形式为“a + bj”或“a * bj”的字符串,如“-5-3j”

但是,如果您将实部和虚部分开作为字符串对。您可以执行以下操作

c = complex(float(re),float(im))