Python txt文件

2024-05-05 15:21:22 发布

您现在位置:Python中文网/ 问答频道 /正文

with open('pg7163.txt', 'r') as f:
    lines = f.readlines()
    
textfra = '*** START OF THE PROJECT GUTENBERG EBOOK'
texttil = '*** END OF THE PROJECT GUTENBERG EBOOK'

for i, line in enumerate(lines):
    if textfra in line:
        break
for j, line in enumerate(lines):
    if texttil in line:
        break
with open("yourfile.txt", "w") as f:
    for line in range(len(lines)):
        if i < line < j:
            f.write(lines)

我正在尝试导入一个txt文件,并且只写入介于“textfra”和“texttil”之间的文本


Tags: oftheintxtprojectforifas
3条回答

我看答案已经是肯定的了。但对我来说,它看起来很奇怪。因此,这里有另一个更干净的slolution:

with open('input.txt', 'r', encoding="utf8") as f:
    txt = f.read()

textfra = '*** START OF THE PROJECT GUTENBERG EBOOK'
texttil = '*** END OF THE PROJECT GUTENBERG EBOOK'

start = txt.find(textfra) + len(textfra)
end   = txt.find(texttil)
res   = txt[start:end]

with open('output.txt', 'w', encoding="utf8") as f:
    f.write(res)

根本不需要循环。这只是基本的字符串方法:查找子字符串和切片源字符串

要修复TypeError并写入内容,请将最后一段代码更改为:

with open("yourfile.txt", "w") as f:
    for k, line in enumerate(lines):
        if i < k < j:
            f.write(line)

您只需要在这些行上循环一次并跟踪当前状态

textfra = '*** START OF THE PROJECT GUTENBERG EBOOK'
texttil = '*** END OF THE PROJECT GUTENBERG EBOOK'

with open('pg7163.txt', 'r') as f:
    with open('yourfile.txt', 'w') as f_out:
        do_write = False
        for line in f:
            if textfra in line:
                do_write = True
            if texttil in line:
                do_write = False
            if do_write:
                f_out.write(line)

相关问题 更多 >