Python 3打印到文件创建错误的新行

时间:2016-12-13 23:09:22

标签: python python-3.x newline spacing

我编写了代码来读取url和IP数据,并将IP作为访问网址的关键。我正在尝试打印IP密钥,然后打印每个网址的访问次数。

问题是当打印到我的文件时,在一些IP之后有一个新行。 这是代码的输出部分:

`for key, value in ipVisit.items():                                     
    outputF.write(key + " " + str(len(ipVisit[key]))+ '\n' )`

即使我增加或减少了密钥和访问次数之间的空格数,第三个输出也是唯一一个在一行上的输出。这是输出:

194.33.212.111
   28
12.65.4.100
   28
205.23.104.49   31
205.23.104.49
   29

我的循环是否做了一些愚蠢的事情?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

我发现在写入文件时非常有用的一件事就是完全忽略write方法:

for key, value in ipVisit.items():
    print(key + " " + str(len(ipVisit[key])), file=outputF)

如果outputF==None输出到stdout,这可能会产生很大的副作用,我过去曾使用过命令行程序(传入输出文件与-或者什么)。

使用print,您将获得您熟悉的换行语义,并且评论者对.rstrip()的建议将处理任何剩余的错误换行符。

编辑:使用+运算符避免使用字符串构建也可能是明智的,而是使用format方法。此外,您已经将值设置为for循环,无需再次索引ipVisit

for key, value in ipVisit.items():
    print('{} {}'.format(key, len(value)), file=outputF)
    # or rstrip if there's still extra newlines
    print('{} {}'.format(key.rstrip(), len(value)), file=outputF)  # this will only work if you're sure `key` is a str