谁能告诉我为什么我得到了attributeError? 'str'对象没有属性'real'

时间:2017-07-05 14:13:05

标签: python attributes

def getFFtMag(data):
    maglist = []
    for x in range(0, len(data)):
        dataVal = data[x]
        firstVal = dataVal.real
        secondVal = dataVal.imag
        mag = math.sqrt(firstVal*firstVal + secondVal*secondVal)
        maglist.append(mag)
    return maglist

>>> getFFtMag("25 - Copy.xlsx")
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    getFFtMag("25 - Copy.xlsx")
  File "<pyshell#10>", line 5, in getFFtMag
    firstVal = dataVal.real
AttributeError: 'str' object has no attribute 'real'
>>> 

所以有人能告诉我为什么我的代码错了吗?附加的错误似乎突然出现。我是python的新手并且正在学习正在发生的事情。我输入的数据有问题吗?感谢。

3 个答案:

答案 0 :(得分:0)

您尝试从文件中读取数据,而不是先将其解析为复数格式。从文件读取的数据将是字符串或类似字节的对象,具体取决于您打开文件的方式。但是在这里,你甚至还没有打开文件。

为了告诉您如何专门解决此问题,我们需要查看您尝试操作的文件的格式。

答案 1 :(得分:0)

您正在使用字符串(显然是文件名)作为参数调用getFFtMag函数。但是,此函数需要具有.real.imag属性的元素的列表(或通常可迭代)。字符串的元素是单字符字符串,字符串不具有这些属性 - 复数具有。您需要读取文件的内容,并以某种方式将它们转换为复杂的。

答案 2 :(得分:0)

您正在将字符串传递给您的函数,而不是使用.real.imag传递数据,并且由于字符串没有这些字段,因此会出现相应的错误。

您必须先阅读文件内容。我建议有一个look at pandas .read_excel() function