Python文件write()没有正确写入/格式化

时间:2013-04-08 19:35:16

标签: python

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

这是我的代码:

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个,4,455个,2,956个三分。 但是当我查看我创建的新文件(outfile)时,我得到了这个:

1
     7935
2
     4455

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

2 个答案:

答案 0 :(得分:4)

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

out.write("%s \t\t %d\n" % (prevLine.rstrip() , curCount))

答案 1 :(得分: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)