在文本文件中读取后修复numpy数组

时间:2017-11-08 20:43:32

标签: python

我试图读取文本文件并在numpy数组中正确格式化。

Input.txt文件包含:

 point_load, 3, -300

 point_load, 6.5, 500

 point_moment, 6.5, 3000  

我想制作这个数组:

 point_load = [3, -300, 65, 500]

我的代码是:

 a = []
 for line in open("Input.txt"):
     li=line.strip()
     if li.startswith("point_load")
          a.append(li.split(","))

 #np.flatten(a)

我的代码打印:

 [['point_load', '     3', '          -300'], ['point_load', '     6.5', '         500']]

任何帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:0)

更改此行:

a.append(li.split(","))

到此:

a.append(li.split(",")[1:])

答案 1 :(得分:0)

为了得到一个数字列表而不是字符串,我建议如下:

a = []
for line in open("Input.txt"):
    li=line.strip()
    if li.startswith("point_load"):
        l = li.split(',')
        for num in l[1:]:
            try:
                num = float(num.strip())
                a.append(num)
            except ValueError:
                print 'num was not a number'

这里的不同之处在于列表切片从第二个逗号分隔的元素开始占用整行(更多这里:understanding-pythons-slice-notation

l[1:]

此外,剥离然后将字符串转换为浮点数(因为你有小数)

num = float(num.strip())

产生的数组:

a = [3.0, -300.0, 6.5, 500.0]

答案 2 :(得分:0)

li.split(",")

返回列表,因此您附加列表,获取嵌套列表

您希望将个别元素附加到a列表,即第2和第3个,i。即索引12。所以相反

a.append(li.split(","))

使用

temp = li.split(","))
second = temp[1]
third  = temp[2]
a.append(float(second))
a.append(float(third))

请注意,使用float()函数作为.split()方法会返回字符串的列表。
(也许在上一个.append()中更适合使用int()函数。)