python - 如何在子行中搜索特定单词。如果找到匹配,则返回父子行
问题描述
在下面的数据中找到“10.10.10.1”,如果找到匹配,则返回其父行“ip access-list extended test2”和匹配行“permit ip host 10.10.10.1 any log”
输入:数据列表=
ip access-list extended test2 10.10.10.1
ip access-list extended test1
deny tcp any eq tacacs any
permit ip any any
ip access-list extended test2
permit ip any any
permit ip host 10.10.10.1 any log
permit icmp host 10.10.10.1 any
permit tcp any any eq 22
permit tcp any any eq tacacs
permit tcp any any
permit udp any any
ip access-list extended test3
permit udp any any eq 123 log
permit udp any any eq 1234 log
permit ip any any
输出应该是:
ip access-list extended test2
permit ip host 10.10.10.1 any log
这是我尝试过的,但我只能返回匹配行我不知道如何匹配父行
final_list = []
for LINE in data_list:
if re.search(r'\b{}\b'.format('10.10.10.1'), LINE):
final_list.append(LINE)
print(final_list)
解决方案
据我所见,我们可以在没有正则表达式的情况下做到这一点,假设parent line
你的意思是以 . 开头的行ip access-list
。
parent_line = None
# data being the input string
for line in data.splitlines():
if line.startswith('ip access-list'):
parent_line = line
elif '10.10.10.1' in line:
print(parent_line)
print(line)
它打印:
ip access-list extended test2
permit ip host 10.10.10.1 any log
如果父行和子行需要在开头基于空格来识别,则此代码将需要非常小的更改。
推荐阅读
- python - Python:如何从列中减去时间戳并创建一个新的 TimeElapsed 列?
- xml - dbms_xmlgen.getxml 在 Oracle 中显示空输出
- python - TypeError:使用statsmodel中的seasonal_decompose时ufunc'isfinite'
- python - 使用 Keras 和 Theano 处理文本分类中的不平衡数据集
- excel - COUNTIF 公式计算不匹配的值
- python - Python:未知类型提示不会引发 __future__ 导入异常
- python - Unndent 不匹配任何外部缩进级别
- matplotlib - matplotlib:如何自动缩放字体大小以使文本适合某些边界框
- kubernetes - 如何使用 Kubernetes API 获取特定 Kubernetes 集群中所有命名空间的列表?
- wolkenkit - 如何使用/消费来自 wolkenkit-eventstore 的事件流