我试图读取文本文件并在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']]
任何帮助将不胜感激。谢谢。
答案 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。即索引1
和2
。所以相反
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()
函数。)