我正在尝试计算每个数字出现在文件中的次数,然后将原始数字及其计数打印到另一个文件。原始数字按升序排序。计数足够接近,但问题是结束格式化。它以某种方式颠倒了我打印它们的顺序!
这是我的代码:
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
换行符应该在最后,而不是在数字之间。为什么会这样?
答案 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)