我的.txt文件看起来如此:
=== Predictions on test data ===
inst# actual predicted error prediction (6)
1 1:1 6:6 + 0.753 (0)
2 1:1 6:6 + 0.753 (0)
3 1:1 5:5 + 0.975 (2)
4 1:1 5:5 + 1 (11)
5 1:1 5:5 + 0.992 (0)
6 1:1 6:6 + 0.941 (0)
7 1:1 3:3 + 0.857 (0)
8 1:1 2:2 + 0.967 (0)
9 1:1 2:2 + 1 (0)
10 1:1 5:5 + 1 (97)
11 1:1 5:5 + 0.956 (0)
12 1:1 5:5 + 1 (1)
13 1:1 5:5 + 0.958 (59)
14 1:1 5:5 + 0.969 (0)
15 1:1 5:5 + 0.984 (0)
16 1:1 4:4 + 0.8 (0)
17 1:1 5:5 + 1 (141)
18 1:1 5:5 + 0.974 (5)
如何只读取“预测”列中的第一个值?特别是,数值出现在每一行的第26列(比如说)?
我写了一个python脚本:
f = open("out_grasp_R.txt", 'r')
f.readline()
f.readline()
f.readline()
for line in f:
f.read(25)
print(f.read(1))
f.readline()
我收到错误消息“混合迭代和读取方法会丢失数据”
我想要一个像:
这样的数组[6,6,5,....]
我该怎么办?
答案 0 :(得分:1)
拆分并从第三列获取第一个元素
更简单with open("out_grasp_R.txt", 'r') as f:
next(f)
print([line.split()[2][0] for line in f])
['6', '6', '5', '5', '5', '6', '3', '2', '2', '5', '5', '5', '5', '5', '5', '4', '5', '5']
如果您确定间距使用print([line[21] for line in f])
,则根据输入文件对应于您想要的数据。除非您考虑空格列,否则实际上有六列。
答案 1 :(得分:1)
使用readlines
方法,您可以获得每行的字符串列表:
filename = 'out_grasp_R.txt'
with open(filename) as f:
content = f.readlines()
predicted = []
for line in content:
predicted.append(int(line.split()[2][0]))
print predicted
[6, 6, 5, 5, 5, 6, 3, 2, 2, 5, 5, 5, 5, 5, 5, 4, 5, 5]
答案 2 :(得分:0)
您可以获取行字符串并将其索引为数组。
print(line[25])
或者制作数组:
array.append(line[25])
这确实要求您确定总是行中的第26个字符。