发布网友 发布时间:2022-04-22 04:23
共2个回答
热心网友 时间:2022-04-07 13:28
我通常建议一开始就用面向对象的思维把事务模块化做好。所以先分析这个问题,抽象,比如你这个需求,其实是文件分隔,加上文本识别,还与文本序列的上下文有关,先写主程序,再分解实现好。
主程序是这样子,假设文本被读放一个lines的list里,主程序这么写
def main():
global last_context
for line in lines:
if is_conext(line):
keep_conext(line)
else:
save_to_file(last_context, line)
这就OK了。
下面再实现数据结构定义
global last_context
last_context=None
然后再实现两个函数
def keep_context(line):
global last_conext
last_conext=line[1:-1]
def is_conext(line):
return line.startswith("[")
def save_to_file(last_context,line):
try:
open(str(last_context)+“.txt","ab").write("%s\r\n"%line)
except:pass
这样会比较清晰。不容易写错程序,效率也高。也容易做测试。
热心网友 时间:2022-04-07 14:46
foo = {}
with open('test.txt') as fromFile:
toFileName = ''
for line in fromFile:
if(line[:1] == '['):
toFileName = line.strip('\n')
foo[toFileName]=[]
else:
foo[toFileName].append(line)
for a in foo:
with open(a+'.txt','a') as toFile:
for content in foo[a]:
toFile.write(content)
将这个作为一个python文件,双击它就可以运行了,注意那个test.txt文件(就是你要处理的那个文件)要和这个python文件放在同一个目录下。经测试我这里可以很好的运行,如果你运行过程中出现路径或者编码的问题,可以继续问。