簡體   English   中英

如何從Python中的任意換行符開始的文件中讀取行

[英]How to read lines from file starting from arbitrary newline in 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'] 

參考文獻:

您可以為此使用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]
lines = open('test.txt', 'r').readlines()

# n is your desired line
for lineno in range(n-1, len(lines)):
    print list(lines[lineno].strip())

好吧,您可以執行以下操作:

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]}

您不能直接跳到特定行。 您必須閱讀前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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM