3

これは本当に奇妙です。temp.txt次の形式のファイルがあります。

   1        1:1        1:1         *0.9    0      0      0.1    0      0    
   2        1:1        1:1         *1      0      0      0      0      0    
   3        1:1        1:1         *1      0      0      0      0      0    
   4        1:1        2:2      +   0.2   *0.7    0.1    0      0      0    
   5        1:1        1:1         *1      0      0      0      0      0    
   6        1:1        1:1         *0.9    0      0      0.1    0      0    
   7        1:1        1:1         *1      0      0      0      0      0    
   8        1:1        1:1         *1      0      0      0      0      0    
   .        .          .           .       .      .      .      .      .
   .        .          .           .       .      .      .      .      .
   .        .          .           .       .      .      .      .      .
6593        1:1        1:1         *1      0      0      0      0      0    

数値自体の意味は重要ではありません (興味がある人は WEKA の出力です)。classes.txt私が望むのは、次のように、各行の 2 番目のコロンの右側にある数値を取得し、それらを数値ごとに 1 行ずつ別のファイルに入れることです。

1
1
1
2
1
.
.
.

これを実現するために、次の Python スクリプトを作成しました。

initial = open('temp.txt')
final = open('classes.txt','w')
for line in initial:
    final.write(list(line.rsplit(':',1)[1])[0]+'\n') 

最初の 5462 行までは完全に機能しますが、明確な理由はありませんが、そこで停止します。残りの 1131 行 (5463 ~ 6593) の番号はclasses.txt. スキップした行をコピーして別のtxtファイルに貼り付け、そのファイルでスクリプトを実行しましたが、結果classes.txtは空でした。

以下に示すように、行 5462 と行 5463 の間に明らかな違いが見られないため、この問題は本当に困惑しています。

5461        1:1        1:1         *1      0      0      0      0      0    
5462        1:1        1:1         *1      0      0      0      0      0    
5463        1:1        4:4      +   0.3    0      0     *0.6    0.1    0    
5464        1:1        1:1         *0.8    0      0      0.2    0      0   

記録のために、コンソールに行を出力するようにスクリプトを変更しましたが、問題なく実行されました。問題は、これらの行をファイルに書き込むことにあるようです。どんな助けでも大歓迎です。

4

3 に答える 3