首页 > 解决方案 > 从文件生成 Python 列表,并从源匹配返回特定值

问题描述

我正在尝试在 python 中构建一个脚本,它将读取包含策略映射列表的文件并生成一个列表。需要为特定策略映射引用另一个源并仅从当前列表中返回该值。

我已经使用 readlines() 读取了文件并生成了一个列表。无法组合索引如下。

['policy-map mohideen1\n', ' class class-default\n', '  service-policy mohideen_child\n', '  police rate 80000000 bps burst 1250000 bytes peak-burst 1250000 bytes \n', '   conform-action transmit\n', '   exceed-action drop\n', '  !\n', ' !\n', ' end-policy-map\n', '!\n', 'policy-map mohideen2\n', ' class class-default\n', '  service-policy mohideen2_child\n', '  police rate 100000000 bps burst 1562500 bytes peak-burst 1562500 bytes \n', '   conform-action transmit\n', '   exceed-action drop\n', '  !\n', ' !\n', ' end-policy-map\n', '!\n', '\n']

预期的输出应该如下:它应该结合 \n' 之后的所有索引,第二个索引应该在那之后,理想情况下我需要在这个列表中有 2 个索引。

按预期生成列表,我在记事本中有一个策略列表,需要遍历它,如果在现有的新列表中找到匹配项,则应返回特定索引。

with open('ICR_input.txt' , 'r') as file_object:
    full = file_object.readlines()
    print (full)
    s = full.split('end-policy-map')
    print(s)

输出

SOURCE = ['a\n' , 'b\n',  '!\n', 'c\n' , 'd\n' ,'!\n']

修改如下

SOURCE1 =  ['a\n b\n', 'c\n d\n']

标签: python

解决方案


我猜你想用“!\ n”分隔你的文本?

您可能希望首先使用 .read() 而不是 .readlines() 来获取字符串。然后,使用 split("!\n") 创建所需的列表。

我冒昧地为您编写了一个函数:

def readFile(filename):
    F=open(filename,"r")
    s=F.read()
    F.close()
    return s.split("!\n")

推荐阅读