2013-04-24 84 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 
>>>