Python 如何打印文件的特定部分?

Python 如何打印文件的特定部分?,python,file,Python,File,输入文件: %----------------------------------------- Task: - [ ] Learn chapter-1 - [ ] Learn chapter-1 %----------------------------------------- Finished Task: - [x] Learn chapter-1 %----------------------------------------- Upcoming Task: - [*] Learn

输入文件:

%-----------------------------------------
Task:
- [ ] Learn chapter-1
- [ ] Learn chapter-1

%-----------------------------------------
Finished Task:
- [x] Learn chapter-1

%-----------------------------------------
Upcoming Task:
- [*] Learn chapter-1
预期输出文件:

%-----------------------------------------
Task:
- [ ] Learn chapter-1
- [ ] Learn chapter-1
%-----------------------------------------
代码示例

data_file = open("test.txt")
block = ""
found = False

for line in data_file:
    if found:
        block += line
        if line.strip() == "Finished Task:": break
    else:
        if line.strip() == "Task":
            found = True
            block = "Task"

data_file.close()

问题是我只想打印任务之间的文本,包括带%------------------------的行。任何建议都将不胜感激。谢谢

您的代码只需很少的修改:

data_file = open("task.txt")
block = ""
found = False

for line in data_file:
    if found:
        if line.strip() == "Finished Task:": 
           break
        else:                # <--
           block += line     # <--  
    else:
        if line.strip() == "Task:":  # <-- 
            found = True
            block = line

data_file.close()

这是你想要的吗?然而,在我看来,在这种情况下,最好的解决方案是正则表达式

现在这是一种非常不实用的自动处理数据格式。您可以更改它,还是来自您的应用程序之外?是的,我可以更改它。实际上,文件结构是根据应用程序的需要设计的。谢谢。那么你应该坚持使用简单的CSV格式,这样更容易处理。之后,当您需要输出待办事项列表时,您可以设计所有这些花哨的线条和括号。在CSV文件中,每个任务有一行,第一列是一个字母-任务的状态(U/F/?)。第二列是任务描述。怎么样?
Task:
- [ ] Learn chapter-1
- [ ] Learn chapter-1

%-----------------------------------------