2013-04-24 81 views
0

我必須閱讀文件如:如何閱讀帶有兩個分隔符的2維陣列

0,11,6,0,10x11,0,5,4,7x6,5,0,2, 3x0,4,2,0,12x10,7,3,12,0

所以我必須將其讀入2d數組中。

這裏是我的代碼:

//set delimiter to commas 
    String r1=","; 
    String r2="x"; 
    input.useDelimiter(r2); 
    //print file to check contents 
    while(input.hasNext()){ 

     System.out.print(input.next()); 
    } 

    //transfer file into matrix 
    int[][] graph=new int[filelength][filelength]; 
    for (int row=0; row<graph.length;row++){ 
     for(int column=0; column<graph[row].length;column++){ 
      graph[row][column]=input.nextInt(); 
     } 
    } 

    } 
    //close file 
    input.close(); 
} 

}

我不得不離開了我的代碼的細節。但我使用掃描儀類,我試圖使用兩個分隔符,以便在分隔符「x」代碼更改爲矩陣的另一行和分隔符「,」代碼輸入到矩陣中。

回答

0

在Python中,如果你是好與數據存儲爲列表的列表,使二維數組,那麼你可以在文件中的數據,在此表示爲一個字符串讀取,並執行以下操作:

>>> from pprint import pprint 
>>> filedata = '0,11,6,0,10x11,0,5,4,7x6,5,0,2,3x0,4,2,0,12x10,7,3,12,0' 
>>> array2d = [row.split(',') for row in filedata.split('x')] 
>>> pprint(array2d) 
[['0', '11', '6', '0', '10'], 
['11', '0', '5', '4', '7'], 
['6', '5', '0', '2', '3'], 
['0', '4', '2', '0', '12'], 
['10', '7', '3', '12', '0']] 
>>> array2d[0] 
['0', '11', '6', '0', '10'] 
>>> array2d[1] 
['11', '0', '5', '4', '7'] 
>>> array2d[1][2] 
'5' 
>>> 

如果你想要的實際整數你可以做:

>>> arrayints = [[int(item) for item in row.split(',')] for row in filedata.split('x')] 
>>> pprint(arrayints) 
[[0, 11, 6, 0, 10], 
[11, 0, 5, 4, 7], 
[6, 5, 0, 2, 3], 
[0, 4, 2, 0, 12], 
[10, 7, 3, 12, 0]] 
>>> arrayints[1][2] 
5 
>>>