将字符串转换为复数python

时间:2017-03-08 02:11:40

标签: python string python-3.x complex-numbers

我试图将输入的字符串转换为浮点数,但是当我这样做时,我会继续得到某种错误,所以下面是我做的样本。我很确定我没有做错任何事,但如果你发现任何错误

     >>> a = "3 + 3j"
     >>> b=complex(a)
    >>> 
    ValueError: complex() arg is a malformed string
    >>> Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
     c= complex("3 + 3j")
    >>> 
    ValueError: complex() arg is a malformed string
    >>> Traceback (most recent call last):
    File "<stdin>", line 1, in <module>

P.S这不是我试图写一个样本的实际代码

4 个答案:

答案 0 :(得分:8)

来自documentation

  

请注意

     

从字符串转换时,字符串不得包含空格   围绕中央+或 - 运营商。例如,complex('1+2j')是   很好,但complex('1 + 2j')提升了ValueError

答案 1 :(得分:7)

根据Francisco Couzo的回答,documentation说明了

  

从字符串转换时,字符串不得包含中心+或 - 运算符周围的空格。例如,复数('1 + 2j')很好,但复数('1 + 2j')引发ValueError。

从字符串中删除所有空格,您将完成它,此代码适用于我:

a = "3 + 3j"
a = a.replace(" ", "") # will do nothing if unneeded
b = complex(a)

答案 2 :(得分:3)

complex的构造函数拒绝嵌入的空格。删除它,它会工作得很好:

>>> complex(''.join(a.split()))  # Remove all whitespace first
(3+3j)

答案 3 :(得分:0)

似乎 eval 就像一个魅力。接受空格(或不接受)并且可以相乘等:

>>> eval("2 * 0.033e-3 + 1j * 0.12e-3")
(6.6e-05+0.00012j)
>>> type(eval("2 * 0.033e-3+1j*0.12 * 1e-3"))
<class 'complex'>

可能有一些我不知道的警告,但它对我有用。