python - Python:如何在下一个不同的字符串重复出现时搜索字符串并打印
问题描述
这里需要一点帮助。我有一个文件,如下所示:
category: dog1
member10
member20
category: cat
member1
member2
member3
category: mydog
member100
member200
member300
category: lion
member1000
member2000
member3000
member4000
category: wolf
member4
member5
member6
category: dog4
member400
member500
member600
member700
member800
我正在尝试提取名称中包含“狗”的所有类别的详细信息及其各自的成员,最好是在字典中,以便我可以对其进行迭代以进行进一步检查。
尝试了许多方法,例如在“if”循环中设置打印标志,但仍然无法获得正确的代码。
============================================
import re
from re import search
keyword = "dog"
should_print = False
file = open("inputfile.txt","r")
lines = file.readlines()
for line in lines:
if (should_print or keyword in line):
print (line.strip("\n"))
should_print = True
============================================
上面从我想要的具有“狗”的类别开始,然后继续打印到文件末尾。不确定我们需要将“should_print”标志设置为 False 的确切位置,然后可能是“继续”语句。
如果有人可以用类似或不同的方法指导或重定向,那就太好了。
提前致谢。
解决方案
你快到了,但你需要在should_print
每个循环中设置为 false,如果该行是一个类别标记。
keyword = "dog"
should_print = False
file = open("inputfile.txt","r")
lines = file.readlines()
for line in lines:
if line.startswith('category'):
should_print = False
if (should_print or keyword in line):
print (line.strip("\n"))
should_print = True
输出:
category: dog1
member10
member20
category: mydog
member100
member200
member300
category: dog4
member400
member500
member600
member700
member800
推荐阅读
- django - 在不调用 save 的情况下将对象添加到数据库
- html - 可滚动的全高 div
- javascript - 多个 xmlhttprequestes 不向后端发送数据
- delphi - 为什么快捷方式在我的 Delphi 程序中不起作用?
- javascript - 如何为立方体 Three.js 制作浮动效果
- python - 想知道为什么我的错误消息会通过文件中读取的每个名称弹出?
- github - 将 Stack Exchange Markdown 转换为 Github Markdown
- css - 带有变换的 CSS 动画:翻译
- angular - 如何处理高度和中等明显的依赖问题?
- javascript - React Context Provider 尽可能靠近消费者