如何在Python中从任意换行符开始读取文件中的行



我有一个文件的格式是用新行分隔行,就像下面的

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()

最新更新