如何用Python从文件中特定行获取三个整数?
我有一个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]