【问题标题】:Writing a new text file in python在 python 中编写一个新的文本文件
【发布时间】:2016-01-31 21:07:53
【问题描述】:

我正在编写遍历文本文件的代码,计算每行中有多少单词,并且无法将结果(每行包含一个数字)放入新的文本文件中。

我的代码:

in_file = open("our_input.txt")
out_file = open("output.txt", "w")


for line in in_file:
    line = (str(line)).split()
    x = (len(line))
    x = str(x)
    out_file.write(x)

in_file.close()  
out_file.close()

但我得到的文件将所有数字放在一行中。

如何在我正在制作的文件中将它们分开?

【问题讨论】:

  • out_file.write(x + '\n')

标签: python file python-3.x split


【解决方案1】:

您需要在每行之后添加一个新行:

out_file.write(x + '\n')

另外,作为处理文件的更 Pythonic 方式,您可以使用 with 语句打开文件,这将在块末尾关闭文件。

您可以使用str.format() 方法在一行中完成所有这些工作,而不是多次赋值并将长度转换为字符串:

with open("our_input.txt") as in_file,open("output.txt", "w") as out_file:
    for line in in_file:
        out_file.write('{}\n'.format(len(line.split())))

【讨论】:

    【解决方案2】:

    写入时在文件中添加换行符

     in_file = open("our_input.txt")
     out_file =open("output.txt", "w")
    
    
    for line in in_file:
        line= (str(line)).split()
        x=(len(line))
        x=str(x)
        out_file.write(x)
        #Write newline
        out_file.write('\n')
    
    in_file.close()  
    

    【讨论】:

      【解决方案3】:

      正如前面的答案所指出的,您需要编写一个换行符来分隔输出。

      这是另一种编写代码的方式

      with open("our_input.txt") as in_file, open("output.txt", "w") as out_file:
          res = map(lambda line: len(line.split()), in_file)
          for r in res:
              out_file.write('%d\n' % r)
      

      【讨论】:

        猜你喜欢
        • 2020-10-20
        • 2014-04-02
        • 1970-01-01
        • 1970-01-01
        • 2017-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多