我有一个(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行拉出三个数字,我会很高兴。
答案 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()]