我试图在某个标签后复制一定次数的行。
如果我有如下文本文件:
##TextLines##
Hi
Hello
##TextLines##
如何删除标签并复制一次?
结束文本文件如下所示:
Hi
Hello
Hi
Hello
现在,我有一个正则表达式来查找标记并用空白换行符替换它们。我知道大多数逐行读取是在打开文件后使用for循环完成的。但是,我不想处理特定的行读取,而是后面的行。有什么想法吗?
编辑:可能有多个标签和未标记的文字。例如:
Hi
##CopyLine1##
Hello
##CopyLine1##
Greetings
##CopyLine2##
Howdy
##CopyLine2##
Hola
会变成:
Hi
Hello
Hello
Greetings
Howdy
Howdy
Hola
答案 0 :(得分:1)
这应该做的工作
import re
regex = re.compile("^##.*##\n$")
out = open("result.txt","w")
matchfound = True
inmatch =False
for line in open('myfile.txt'):
if regex.match(line):
matchfound = True
else:
matchfound = False
if matchfound and not inmatch:
inmatch = True
content = []
elif matchfound and inmatch:
inmatch = False
out.write ("".join(content))
elif inmatch:
content.append(line)
out.write(line)
else:
out.write(line)
out.close()
答案 1 :(得分:0)
def isTag(line):
return line.startswith('##')
class LineHandler(object):
def normalLine(self,line):
if isTag(line):
self.lineHandler = self.insideTag
else:
print line
def insideTag(self,line):
if isTag(line):
self.lineHandler = self.normalLine
else:
print line
print line
def __init__(self,path):
self.lineHandler = self.normalLine
for line in file(path):
self.lineHandler(line.strip())
LineHandler('lines.txt')