我有一个包含5段数据的.txt文件。每个部分都有一个标题行“section X”。我想从这个文件中分析并编写5个独立的文件。该节将从标题开始,在下一节标题之前结束。下面的代码创建了5个单独的文件;但是,它们都是空的。你知道吗
from itertools import cycle
filename = raw_input("Which file?: \n")
dimensionsList = ["Section 1", "Section 2",
"Section 3", "Section 4", "Section 5"]
with open(filename+".txt", "rb") as oldfile:
for i in dimensionsList:
licycle = cycle(dimensionsList)
nextelem = licycle.next()
with open(i+".txt", "w") as newfile:
for line in oldfile:
if line.strip() == i:
break
for line in oldfile:
if line.strip() == nextelem:
break
newfile.write(line)
问题
在测试代码时,它只对第1节有效(其他部分对我来说也是空白)。我意识到问题在于节之间的转换(还有,
licycle
在所有的iteraction上重新启动)。你知道吗第2节在第二个
for
(if line.strip() == nextelem
)处读取。下一行是第2节的数据(而不是文本Section 2
)。你知道吗这很难用文字表达,但请测试以下代码:
它将打印:
它为第1节工作,它检测第2节,但它一直忽略行,因为它找不到“第2节”。你知道吗
如果每次重新启动这些行(总是从第1行开始),我认为程序会工作。但是我做了一个简单的代码,应该对你有用。你知道吗
解决方案
如果找到该节,它将开始在这个新文件中写入。否则,继续在当前文件中写入。你知道吗
Ps.:下面是我使用的文件示例:
相关问题 更多 >
编程相关推荐