我有一个文件的格式是用新行分隔行,就像下面的
1 1 1 1
2 2 2 2 2 2 2
3 3 3 3 3 3
我想从第二行开始分别读取这些行,并将它们保存在一个数组中。我想我可以处理最后一部分,但我不知道如何从文件的第n行开始读取。你知道我该怎么做吗?谢谢顺致敬意,
由于文件在python中是可迭代的,您可以在上面调用next
来跳过第一行,例如:
with open('data.txt', 'r') as data:
next(data)
for line in data:
print line.split()
收益率:
['2', '2', '2', '2', '2', '2', '2']
['3', '3', '3', '3', '3', '3']
参考文献:
- 下一个
- str.split
您可以为此使用itertool.islice
,例如:
from itertools import islice
with open('filename') as fin:
wanted = islice(fin, 1, None) # change 1 to lines to skip
data = [line.split() for line in wanted]
好吧,你可以这样做:
n1, n2 = 0, 2
with open('filename.txt') as f:
print 'n'.join(f.read().split('n')[n1:n2+1])
这将产生(根据你发布的文件中的内容)这样的输出:
1 1 1 1
2 2 2 2 2 2 2
3 3 3 3 3 3
编辑1:
@mic tiz根据你在下面发布的评论,我理解你希望将文本文件中的所有数字都放在一个数组中。
with open('filename.txt') as f:
array = [i for i in f.read() if not i == ' ']
正如您所提到的,此代码将生成一个列表array
array = ['1', '1', '1', '1', 'n', '2', '2', '2', '2', '2', '2', '2', 'n', '3', '3', '3', '3', '3', '3']
然后,您可以通过在出现n
字符时对其进行拆分来打印元素。
编辑2:你可以使用下面的代码将这些数字保存在字典中
d = {}
with open('filename.txt') as f:
array = f.read().split('n')
for i in range(len(array)):
d['l%r'%i] = [int(j) for j in array[i] if not j == ' ']
这将产生d = {'l2': [3, 3, 3, 3, 3, 3], 'l0': [1, 1, 1, 1], 'l1': [2, 2, 2, 2, 2, 2, 2]}
lines = open('test.txt', 'r').readlines()
# n is your desired line
for lineno in range(n-1, len(lines)):
print list(lines[lineno].strip())
您不能直接跳转到特定行。你必须阅读前n行:
n = 1
with open('data.txt', 'r') as data:
for idx, _ in enumerate(data):
if idx == n:
break
for line in data:
print line.split()