这真的很奇怪。
我有一个名为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
的单独文件中,每个数字占一行,如下所示:
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
值得一提的是,我已经更改了脚本以将行打印到控制台,并且它做得很好。问题似乎出在将这些行写入文件上。非常感谢任何帮助。
classes.txt
文件包含了6593行。 - falsetrulist(line.rsplit(':',1)[1])[0]
是完全没有必要的。只需使用line.rsplit(':', 1)[1][0]
即可。 - Bakuriu