写入文件,添加额外空间
Posted
技术标签:
【中文标题】写入文件,添加额外空间【英文标题】:Writing to a File, Adding an Additional Space 【发布时间】:2016-05-08 23:15:03 【问题描述】:我正在创建一个生成俳句的马尔可夫文本生成器。 生成俳句本身的函数将使用 for 循环生成 100 句俳句。它们可能看起来像:
第 1 行 线2 第 3 行 第1行 线2 第 3 行 第1行 线2 第3行
当我尝试将这些行写入文件时,我想在每个俳句之间包含一个空格,所以它看起来像:
line1
line2
line3
line1
line2
line3
line1
line2
line3
在写入文件时如何实现这一点?
此外,有时它不会保留格式... 有时,它被写成 line1line2line3
我将如何构建我的循环?
我试过了:
def writeToFile():
with open("results.txt", "w") as fp:
count = 0
for haiku in haikuList:
for line in haiku:
for item in line:
fp.write(str(item))
count += 1
print "There are", count, "lines in your file."
haikuList 看起来像:
[[line1,
line2,
line3],
[line1,
line2,
line3],
[line1,
line2,
line3],
[line1,
line2,
line3]]
【问题讨论】:
完成后,如果你能给我发一个很好的俳句,我会很高兴:D 【参考方案1】:像这样使用str.join()
:
def writeToFile():
with open("results.txt", "w") as fp:
fp.write('\n'.format('\n\n'.join(['\n'.join(haiku) for haiku in haikuList])))
print "There are lines in your file.".format(len(haikuList)*3 + len(haikuList)-1)
这将打印每个俳句中的每一行,并由一个换行符分隔。 str.join()
也用于在每个俳句之间添加新行。使用file.write()
,如果需要,您需要添加新行,所以我使用了str.format()
。
最后,写入文件的行数将等于 haikuList
的长度乘以 3 加上 len(haikuList) - 1
用于每个俳句之间的新行,因此您不需要计数器.
另外一件事,你应该将俳句列表传递给writeToFile()
函数,而不是访问函数外部的变量:
def writeToFile(haikuList):
with open("results.txt", "w") as fp:
fp.write('\n'.format('\n\n'.join(['\n'.join(haiku) for haiku in haikuList])))
print "There are lines in your file.".format(len(haikuList)*3 + len(haikuList)-1)
然后这样称呼它:
writeToFile(haikuList)
【讨论】:
嗨,也许我的问题措辞有点错误。这在将每个俳句放在单独的行上时效果很好。但是,我正在寻找每个俳句之间的空白行,并且俳句的每一行本身都在单独的行上。我正在编辑我的问题以使其更清楚! @natalien:您可以尝试根据您的需求变化调整答案。我已经更新了答案,即使用'\n'.join()
而不是' '.join()
并在俳句之间添加一个额外的新行。
是的,我只是对如何组织它感到困惑。谢谢!【参考方案2】:
在for line
循环之后放置一个fp.write("\n")
;这将在每个俳句的末尾添加一个空行。
如果您需要在每一项之后添加一个空格,您可以在fp.write(str(item))
之后添加fp.write(" ")
。
【讨论】:
或fp.write(' '.join(line))
(他可以使用len(items)
,而不是每一项都加一)【参考方案3】:
假设您的俳句列表中的每个俳句都是list
或str
或unicode
,您可以更简洁地执行类似的操作。
def writeToFile():
with open("results.txt", "w") as fp:
count = 0
for haiku in haikuList:
fp.write(" ".join(haiku) + "\n"):
count += len(haiku)
print "There are", count, "lines in your file."
【讨论】:
感谢您的回答!我实际上对我的问题进行了一些编辑。意识到我以前不是很清楚!以上是关于写入文件,添加额外空间的主要内容,如果未能解决你的问题,请参考以下文章