【发布时间】:2013-08-11 01:05:46
【问题描述】:
这真的很奇怪。
我有一个文件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 行中完美运行,但没有明显的原因它停在那里。 classes.txt 中没有剩余 1131 行 (5463 - 6593) 中的数字。我将跳过的行复制并粘贴到单独的 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
为了记录,我更改了脚本以将行打印到控制台,它做得很好。问题似乎在于将这些行写入文件。任何帮助将不胜感激。
【问题讨论】:
-
你能把文件上传到某个地方吗?
-
您可以在这里下载:d.pr/f/qxUk
-
您的代码非常适合我。文件系统是否有足够的空间?
-
您确定您的 classes.txt 文件包含所有 6593 行吗?我绝对有足够的空间。
-
是的,生成的
classes.txt文件包含6593行。