我試圖創建一個程序,它將數據放入一個2 x 10的表格中,並將其放入文本文件中的數字中。然後程序需要在以後的迭代中檢索這些信息。但我不知道如何做到這一點。我一直在查看numpty命令,常規文件命令以及嘗試製作表格的方法。但我似乎無法得到任何這樣的工作。如何讀取和寫入表格/矩陣文件與Python?
這裏是我試圖使表的例子:
0 1 1 1 0 9 6 5
5 2 7 2 1 1 1 0
然後我會檢索這些值。什麼是這樣做的好方法?
我試圖創建一個程序,它將數據放入一個2 x 10的表格中,並將其放入文本文件中的數字中。然後程序需要在以後的迭代中檢索這些信息。但我不知道如何做到這一點。我一直在查看numpty命令,常規文件命令以及嘗試製作表格的方法。但我似乎無法得到任何這樣的工作。如何讀取和寫入表格/矩陣文件與Python?
這裏是我試圖使表的例子:
0 1 1 1 0 9 6 5
5 2 7 2 1 1 1 0
然後我會檢索這些值。什麼是這樣做的好方法?
處理線一個接一個:
with open('filename') as f:
for ln in f:
a = [int(x) for x in ln.split()]
或,以產生二維數組:
with open('filename') as f:
a = [[int(x) for x in ln.split()] for ln in f]
由於Ord和弗朗西斯蒙特薩諾的意見
'[[int(x)for ln.split()] for in in f.readlines()]' – Ord 2013-02-08 20:45:00
'readlines()'不是必須的,如果文件太大會減慢代碼並填充很多記憶。最好使用'for ln in f:' – 2013-02-08 20:56:50
numpy
應該足夠了
table = np.loadtxt(filename)
這將有形狀(2,10)。如果您想將其置換,只需在關閉支架後添加.T
即可
我很確定大多數項目都希望避免使用'numpy'作爲依賴項... – 2013-02-08 21:08:28
你爲什麼這麼認爲? – 2013-02-08 21:10:12
這是一個沉重的項目,除非他在該矩陣上進行嚴格的數學計算,否則真的沒有理由使用numpy。不要誤解我的意思,這是一個偉大的圖書館。 OTOH,它看起來好像在探索問題中的選項,所以也許這就是要走的路。 – 2013-02-08 21:14:07
爲什麼不使用csv
模塊?
table = [[1,2,3],[4,5,6]]
import csv
# write it
with open('test_file.csv', 'w') as csvfile:
writer = csv.writer(csvfile)
[writer.writerow(r) for r in table]
# read it
with open('test_file.csv', 'r') as csvfile:
reader = csv.reader(csvfile)
table = [[int(e) for e in r] for r in reader]
此方法還有其他程序(如Excel)可以讀取的文件。
哎呀,如果你真的需要它的空間或製表符分隔,只需將delimiter="\t"
添加到您的讀者和作家的建設。
你必須定義「表」。它是一個具有四個空格分隔的數字文本文件嗎?或者它是一組在5個空格內左對齊的數字。它們不一樣,除非所有數字都是單個數字。 – 2013-02-08 20:23:36