【问题标题】: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()
但我得到的文件将所有数字放在一行中。
如何在我正在制作的文件中将它们分开?
【问题讨论】:
标签:
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)