如何使用Python从文件中的特定行获取三个整数?

时间:2014-08-27 19:27:34

标签: python string linecache

我有一个(ASCII)文件foo.txt,里面有很多东西,但我只关心第2行的三个数字(用空格分隔)。对于您的信息(我不知道它是否相关),此行之前和之后的行上的列数与第2行的列数相同。

我想从第2行获取这三个数字并将它们存储为三个单独的整数(无论是三个单独的变量还是长度为3的列表,我都不在乎)。

我正在使用linecache.getline()专门从文件中获取该行,但它将该行拉出为一个长字符串(而不是让该行上的每个数字都是它自己的字符串)而且我不会知道如何从结果字符串中提取三个数字。

这是我的代码:

import linecache
linetemp = linecache.getline('foo.txt',2)
#nr = [int(i) for i in line.split(linetemp)]
print nr

注释行是我尝试将linetemp中的数字作为整数提取但是因为linetemp是一个字符串(而不是字符串列表),所以它不起作用。

如果您可以使用linecache.getline()改进上面的内容,或者如果您有另一种方法从foo.txt的第2行拉出三个数字,我会很高兴。

2 个答案:

答案 0 :(得分:2)

尝试

nr = [int(i) for i in linetemp.split()]

您需要在要分割的字符串上调用split()函数。

示例:

In [1]: linetemp = '  12     27   435'

In [2]: nr = [int(i) for i in linetemp.split()]

In [3]: nr
Out[3]: [12, 27, 435]

答案 1 :(得分:1)

我不打算在这里使用linecache - 这是出于其他目的 - 而是使用islice来限制您正在阅读的文件的范围,然后将该行转换为{{ 1}} S:

int

如果您不想导入,则可以执行以下操作:

from itertools import islice

with open('foo.txt') as fin:
    line2 = next(islice(fin, 1, None), '')
    nr = [int(word) for word in line2.split()]