我在那個線與新線分離的方式格式化的文件,像下面如何從文件中讀取從任意換行開始線在Python
1 1 1 1
2 2 2 2 2 2 2
3 3 3 3 3 3
我想單獨看線例如從第二個開始,並將它們保存在一個數組中。我想我可以管理最後一部分,但我無法弄清楚如何從文件的第n個換行開始讀取。 任何想法,我該怎麼做? 謝謝。 此致敬禮。
我在那個線與新線分離的方式格式化的文件,像下面如何從文件中讀取從任意換行開始線在Python
1 1 1 1
2 2 2 2 2 2 2
3 3 3 3 3 3
我想單獨看線例如從第二個開始,並將它們保存在一個數組中。我想我可以管理最後一部分,但我無法弄清楚如何從文件的第n個換行開始讀取。 任何想法,我該怎麼做? 謝謝。 此致敬禮。
嗯,你可以做這樣的事情:
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
EDIT 1:
@mi c-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]}
這種方法可以打印我不會的行,但現在我不知道如何把數組中不同位置的線的每個數字,如[1,1,1,1]。 –
好吧,我想我打開了這樣的最後一部分I = [] with open('I_t.dat')as f: i ='\ n'.join(f.read()。split('\ N')[N1:N2]) 的j我: 如果j == '\ t': 繼續 其他: I.append(浮點(J)) –
只是一個問題。現在我有一個格式爲1 \ t1 \ t1 \ t的文件,如果我嘗試用前面提到的方法刪除\ t,並以0到9的數字組成的數組結束,但是我的文件也包含更大的數字,而我不要解決問題。 –
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()
您可以使用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]
顯示你知道的代碼。如果你正在使用readline,你可以計算到你想要保存的點 –