【问题标题】:Why is there a gap between the lines of text?为什么文本行之间有间隙?
【发布时间】:2017-08-17 16:31:32
【问题描述】:

当我运行这段代码时,我无法弄清楚为什么每行文本之间都有一个空格:

file = open("Children.txt", 'a')
    file.write("\n" + childName)
    file.close()

    file = open("Children.txt", 'r')
    lineList = file.readlines()
    sorted(lineList)
    print("List of children's names in alphabetical order:")
    for line in lineList:
        print(line)
    file.close()

每行之间的空格仅在我使用 sorted() 函数时出现。如果我不将它包含在代码中而只使用 print(file) 函数,则结果显示时文本行之间没有空格。但是我需要按字母顺序显示结果,这就是我使用 sorted() 函数的原因。

【问题讨论】:

  • 试试这个:print(line, end="")
  • 打印添加换行 lineiterator 保持它:打印两次
  • 顺便说一句,如果将行尾字符 \n 放在行尾会更好一些。这样,您的文件将始终以\n 结尾;如果文件没有以 EOL 结尾,某些工具将无法正确处理文本文件,例如可能不会显示最后一行。
  • 如果print(file) 打印未排序的名称,每行一个,我会感到非常惊讶。它应该打印文件句柄的repr,例如<_io.TextIOWrapper name='Children.txt' mode='r' encoding='UTF-8'>。你确定你在向我们展示你的真实代码吗?
  • @PM2Ring print(file) 在哪里被调用?

标签: python python-3.x


【解决方案1】:

f.readlines() 在读取文件时不会去除尾随换行符。您的列表项将包含一个尾随换行符,该换行符被打印出来。顺便说一句,print also 在输入的末尾添加了一个换行符,这意味着每行都打印有 两个 换行符。

您可以通过删除换行符或 printing 与 end="" 来更改此设置:

for line in lineList: 
    print(line.rstrip())  # or print(line, end="")

此外,sorted 不是就地函数。如果您想就地排序,请致电.sort()

lineList.sort()

【讨论】:

  • print(line.rstrip()) 和 print(line, end="") 优缺点有什么区别?顺便说一句,非常有用的答案,我使用了 .rstrip() 选项,效果很好。我只是想确保我使用的是最佳选择。非常感谢您的帮助。
  • @sleepylog 这主要是一个偏好问题。我认为print(..., end="") 稍微快一些,因为rstrip 是开销。但这取决于你。
  • 谢谢,我现在会使用 (line, end="") 选项,看看效果如何。你帮了大忙。干杯!
猜你喜欢
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多