python - 如何从文本文件中只读取第 26 列?

标签 python io

我的 .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,....]

我该怎么办?

最佳答案

从第三列中拆分并获取第一个元素更简单

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]) ,它对应于您根据输入文件所需的数据。除非您考虑空格列,否则您实际上有六列。

关于python - 如何从文本文件中只读取第 26 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29901306/

相关文章:

python - Numpy - 获得相邻元素之间的乘法差异

python - 我如何在 Python 中获得类似 Cron 的调度程序?

输入类型中的 PhP 命名空间

haskell - 有没有办法从 IO monad 中解开类型?

python - 在 Python 中监视变量的变化

python - 用于在 python 中搜索视频的 Youtube API 中的 Unicode

python - Django env 设置在检查是否设置了 env 变量之前进行评估

python - 如何统计与ListView中显示的项目相关的对象?

java - 文件上传及读取

Python列表操作(追加多个列表)