【问题标题】:Python printing output to file adds extra blank linePython打印输出到文件添加额外的空行
【发布时间】:2020-11-20 19:44:55
【问题描述】:

我正在编写一个简单的程序,将文本文件中的一个单词替换为单词“banana”。以下是它目前的结构:

file = filedialog.askopenfilename(initialdir="/Users/Alex/Desktop", title="Open File", filetypes=(("TXT files", "*.txt"), ))
for line in fileinput.FileInput(file,inplace=1):
    if 'sports' in line:
        temp = line.split()
        rep = temp[0]
        line = line.replace(rep, "Banana")
    print(line)

该单词已按预期替换,但是每当我检查新文件时,每行文本之间都有一个空白行。它应该是这样的:

Cats are cute.
Banana enjoy sports.
I like to wear jackets.
Green is my favorite color.

但是,它看起来像这样:

Cats are cute.

Banana enjoy sports.

I like to wear jackets.

Green is my favorite color.

如何去掉文件中每行文本之间的空行?

【问题讨论】:

    标签: python file replace


    【解决方案1】:

    print() 函数默认在打印语句的末尾添加一个换行符。如果你想摆脱它,传递一个空字符串作为第三个参数。有关详细信息,请参阅文档:https://www.w3schools.com/python/ref_func_print.asp

    【讨论】:

      【解决方案2】:

      当迭代一个文件(或类似文件的对象)时,每一行都以换行符\n结束。

      所以你需要去掉它,因为print 函数会添加另一个\n

      for line in fileinput.FileInput(file, inplace=1):
          line = line.rstrip()  # drop newline
          if "sports" in line:
              temp = line.split()
              rep = temp[0]
              line = line.replace(rep, "Banana")
          print(line)
      

      你也可以告诉print不要打印换行符,使用end关键字参数:

      for line in fileinput.FileInput(file, inplace=1):
          if "sports" in line:
              temp = line.split()
              rep = temp[0]
              line = line.replace(rep, "Banana")
          print(line, end="")
      

      【讨论】:

        【解决方案3】:

        默认情况下,print 在您传递的任何内容之后都会添加一个额外的换行符。你可以改变这个

        print(line, end='')
        

        https://docs.python.org/3/library/functions.html#print

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-01-13
          • 1970-01-01
          • 2014-10-10
          • 2021-11-28
          • 2016-08-06
          • 2019-10-01
          • 1970-01-01
          相关资源
          最近更新 更多