2015-10-17 60 views
0

我真的是新的Python,我有我的第一個問題。我有5個文件.csv,我想將這個文件讀到幾個數組。所以我的數據看到:將文件讀取到Python中的幾個數組

data11 data12 ... data1n 
data21 data22 ... data2n 
     .... 
datan1 datan2 ... datann 

我想有3個數組。首先與列1,第二與列2和第三與其他一切。我嘗試做,我寫這個:

odczyt.append(csv.reader(open('1.csv'),delimiter=',')) 
odczyt.append(csv.reader(open('2.csv'),delimiter=',')) 
odczyt.append(csv.reader(open('3.csv'),delimiter=',')) 
odczyt.append(csv.reader(open('4.csv'),delimiter=',')) 
odczyt.append(csv.reader(open('5.csv'),delimiter=',')) 

for plik in odczyt: 
    tab.append(map(int, wiersz[0]) for wiersz in plik) 
    tab1.append(map(int, wiersz[1]) for wiersz in plik) 
    tab2.append(map(float,wiersz[2:]) for wiersz in plik) 

但它不起作用。

+0

爲什麼它不起作用?它做什麼,它有什麼問題? – Tim

+0

當我嘗試打印我得到的東西: <發生器對象在0x055EE198> – heheszki

+0

我使用python 2.7 – heheszki

回答

0

我解決了這個問題,但現在我有其他。當我嘗試轉換字符串 - > int,而不是一個int,我得到int數組。例如: 應該是12,是[1,2]。 這是我的代碼:

for i in range(5): 
     with open("%d.csv" %i, "r") as odczyt[i]: 
     wiersze[i] = odczyt[i].readlines() 
     for wiersz in wiersze[i]: 
      tokers = wiersz.split(',') 
      tab[i].append(map(int, tokers[0])) 
      tab1[i].append(map(int, tokers[1])) 
      tab2[i].append(map(float, tokers[2:])) 

隨着TAB2一切正常,但標籤和tab1的工作,因爲我在上面寫了。

0

非常基本的解決方案是逐行讀取文件並解析它們。普萊斯efind下面的例子:

 arr1 = [] 
    arr2 = [] 
    arr3 = [] 

    with open ('my_file.csv') as infile: 
     ss = infile.readlines() 
    for line in ss: 
     entries = line.split(",") 
     arr1.append(entries[0]) 
     arr2.append(entries[1]) 
     arr3.append(",".join(entries[2:]))    

關於第二個問題 - 地圖適用於iterables,但你給它一個字符串代替。它沒有什麼可做的,只是將它轉換爲它可以迭代的對象。在這種情況下的字符數組。然後,它將int轉換應用於每個字符並給出結果。 tab1和tab0的核心代碼爲:

  tab.append(int(wiersz[0]) for wiersz in plik) 
     tab1.append(int(wiersz[1]) for wiersz in plik) 
+0

謝謝,我發現這個解決方案之前,你寫它;) – heheszki