用Python编写新文本文件

3

我是一名中文翻译,以下是与IT技术相关的翻译内容。您需要将代码读取每行的单词数,并将结果(多行数字)输出到一个新的文本文件中。然而,您可能会遇到困难。

我的代码:

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()

但是我得到的文件中所有数字都在一行上。

我该如何在我正在创建的文件中将它们分开?


3
out_file.write(x + '\n') - undefined
3个回答

5

在每一行后面添加一个新行:

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())))

3
在写入文件时添加换行符
 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()  

0

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

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

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接