1

我正在尝试计算每个数字在文件中出现的次数,然后将原始数字及其计数打印到另一个文件中。原始数字按升序排列。计数足够接近,但问题是结束格式。它以某种方式颠倒了我打印它们的顺序!

这是我的代码:

with open(filename) as f:
    prevLine=f.readline()
    out = open(outfile,'w')
    for line in f:
        if line == prevLine:
            curCount = curCount+1
        else:
            out.write("%s \t\t %d\n" % (prevLine , curCount))
            curCount =1
        prevLine=line
    out.close()

前几行应该如下所示:

1     7935
2     4455
3     2956

有 7,935 个 1、4,455 个 2 和 2,956 个 3。但是当我查看我创建的新文件(outfile)时,我得到了这个:

1
     7935
2
     4455

换行符应该在末尾,而不是在数字之间。为什么会这样?

4

2 回答 2

4

末尾仍有换行符prevLine,请将写入行更改为以下内容:

out.write("%s \t\t %d\n" % (prevLine.rstrip() , curCount))
于 2013-04-08T19:45:26.800 回答
0

\n你忘记了换行符out.write("%s \t\t %d\n" % (prevLine , curCount))

此外,不建议在 python 中使用旧的 printf 格式。我个人更喜欢这个:str_output="""{prev_line}\t\t {current_count}\n""".format(prev_line=prevLine,current_count=curCount)

就像@mtadd 的答案所说,用于rstrip()prevLine字符串中删除换行符。

给予:

str_output="{prev}\t\t {cur_cnt}\n".format(prev=prevLine.rstrip(),cur_cnt=curCount) 
out.write(str_output)
于 2013-04-08T19:37:35.790 回答