我试图将输入的字符串转换为浮点数,但是当我这样做时,我会继续得到某种错误,所以下面是我做的样本。我很确定我没有做错任何事,但如果你发现任何错误
>>> 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这不是我试图写一个样本的实际代码
答案 0 :(得分:8)
请注意
从字符串转换时,字符串不得包含空格 围绕中央+或 - 运营商。例如,
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'>
可能有一些我不知道的警告,但它对我有用。