将一段文本写入文件

0 投票
3 回答
1427 浏览
提问于 2025-04-17 22:12

在我的任务中,我需要把一个文本块写入到一个txt文件里,这个文本块是在两个指定的词之间(也就是以这两个词开头的行)。输入文件看起来是这样的:

SP_LINE
texttexttexttext
texttexttexttext
texttexttexttext
texttexttexttext
texttexttexttext
texttexttexttext
//
NON_SP_LINE
texttexttexttext
texttexttexttext
texttexttexttext
texttexttexttext
texttexttexttext
texttexttexttext
END_NON_LINE
SP_LINE
texttexttexttext
texttexttexttext
texttexttexttext
texttexttexttext
texttexttexttext
texttexttexttext
//

我需要把在SP_LINE和'//'之间的文本写入文件。我试过这样做:

import re

fr=open("various.multi").read()
gr=open("locus.txt",'w')

for m in re.finditer("SP_LINE",fr):
    a=int(m.start())
    for n in re.finditer("//", fr[a:]):
        b=int(n.end())
        gr.write(fr[a:b])
gr.close()

但是没有成功。

3 个回答

0

这个能用吗?

引入正则表达式模块

fr=open("various.multi").read()
gr=open("locus.txt",'w')

for m in re.finditer("SP_LINE",fr):
    a = int(m.start())
    b = a + int(re.search("//", fr[a:]).start())
    gr.write(fr[a:b])
gr.close()
1

好吧,这里你可以聪明一点。你其实是在说,你需要把文件中的字符串 'SP_LINE' 和 '//' 删除掉。所以,可以把你的代码简化成这样:

import re

gr=open("locus.txt",'w')

for line in open('data.txt'):
    if re.match('SP_LINE|//', line):
        continue
    gr.write(line)
gr.close()
0

试试这个:

import re

fr=open("various.multi").read()
gr=open("locus.txt",'w')

for m in re.finditer(r"\bSP_LINE\b",fr):
    for n in re.finditer(r"//", fr[m.end():]):
        gr.write(fr[m.start():m.end()+n.end()])
        break
gr.close()

撰写回答