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

0 投票
2 回答
754 浏览
提问于 2025-04-18 18:46

我有一个ASCII文件,叫做foo.txt,里面有很多内容,但我只关心第二行的三个数字(它们之间用空格分开)。顺便说一下(我不知道这是否重要),在这行之前和之后的行的列数和第二行是不一样的。

我想把第二行的这三个数字提取出来,存储为三个独立的整数(无论是三个单独的变量还是一个长度为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 个回答

1

我觉得在这里用 linecache 没什么必要,因为它是用来做其他事情的。你可以用 islice 来限制你读取文件的范围,然后把那一行转换成 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()]

如果你不想导入其他模块的话,你可以这样做:

with open('foo.txt') as fin:
    next(fin, '') # skip first line
                                # next line or blank
    nr = [int(word) for word in next(fin, '').split()]
3

试试看

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]

撰写回答