python读取文件的文档怎么转换成数组

TXT的文件是
4.02381782+0.j
-0.73812874-0.20664303j
0.41353142-1.54951921j
-0.33210083+0.61648559j
0.70282186+0.j
-0.33210083-0.61648559j
0.41353142+1.54951921j
-0.73812874+0.20664303j

怎么转换成可以进行计算的数组啊?
转换成能够被np.fft.fft(X)来计算的数组?

转换这个需要什么对应的库么?

你好:

请看如下代码:

txtpath=r"a.txt"
fp=open(txtpath)
arrA=[]
for linea in fp.readlines():
    arrA.append(complex(linea.replace("\n","")))

fp.close()
print arrA

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-12
X=[complex(line) for line in open(r"TXT文件名")]追问

>>> X=[complex(line) for line in open(r"test.txt")]
Traceback (most recent call last):
File "", line 1, in
ValueError: complex() arg is a malformed string
不对额

追答

>>> X=[complex(line) for line in open(r"test.txt")]
>>> X
[(4.02381782+0j), (-0.73812874-0.20664303j), (0.41353142-1.54951921j), (-0.33210083+0.61648559j), (0.70282186+0j), (-0.33210083-0.61648559j), (0.41353142+1.54951921j), (-0.73812874+0.20664303j)]

我把你给的文本复制,然后用python2.7执行,结果如上。
你的文件是不是还有其它行

追问

是想把每一行的数字 作为一个元素,把他们一起放入数组
就是这样
AAA
BBB
CCC
变成[AAA BBB CCC]。

追答

你的文件肯定包含了额外的空行或者不是复数的行,帮你用正则过滤一下吧
>>>import re

>>> reg=re.compile(r"^\s*[+-]?\d+(\.\d*)?([+-]?\d+(\.\d*)?j)?\s*$")
>>> X=[complex(line.strip()) for line in open(r"test.txt") if reg.search(line)]
>>> X
[(4.02381782+0j), (-0.73812874-0.20664303j), (0.41353142-1.54951921j), (-0.33210083+0.61648559j), (0.70282186+0j), (-0.33210083-0.61648559j), (0.41353142+1.54951921j), (-0.73812874+0.20664303j)]

追问

谢谢啊 你的的确是对的,是我自己的问题。。。一直不知道怎么正则过滤

追答

如果我最开始给的答案运行错误,你采纳的那个应该会出现一样的错误吧?

相似回答