如何将指定Filter_Port表格数据转换为Python tuple格式
Python Solution to Parse Filter_Port Data into Target Format
这里有个简洁的Python实现,能精准把你提供的原始Filter_Port字符串转换成目标的元组列表格式:
# 原始输入数据 raw_data = '''Filter_Port table type : filter_1 ports : [7d77a1b7-434b-47fd-b2aa-d3442b831205] type : filter_2 ports : [95a67e8c-63f9-4efc-b6b1-c04d5df61578, e1fea65f-62a3-43e9-8c33-c0e44ac3c86a] type : filter_2 ports : []''' # 第一步:去掉开头无关的"Filter_Port table ",然后按"type : "分割得到每个filter的片段 filter_segments = raw_data.replace("Filter_Port table ", "").split("type : ") # 跳过分割后第一个空元素(因为开头就是"type : ") filter_segments = [seg for seg in filter_segments if seg] result = [] for seg in filter_segments: # 分割出filter类型和ports部分 filter_type, ports_part = seg.split(" ports : ", maxsplit=1) # 处理ports字符串:去掉[],分割元素(空的话直接返回空列表) ports_str = ports_part.strip("[]") ports_list = [port.strip() for port in ports_str.split(",")] if ports_str else [] # 添加到结果列表 result.append((filter_type, ports_list)) print(result)
运行这段代码后,输出的result就完全符合你要的格式:
[('filter_1', ['7d77a1b7-434b-47fd-b2aa-d3442b831205']), ('filter_2', ['95a67e8c-63f9-4efc-b6b1-c04d5df61578', 'e1fea65f-62a3-43e9-8c33-c0e44ac3c86a']), ('filter_2', [])]
代码逻辑拆解
- 预处理原始字符串:先移除开头的"Filter_Port table "占位文本,再用"type : "作为分隔符拆分,把每个filter的独立片段提取出来。
- 解析每个filter片段:对每个片段用" ports : "拆分,分别拿到filter类型和ports的字符串内容。
- 处理ports列表:去掉ports字符串前后的方括号,如果里面有内容就按逗号分割并去除每个端口ID的多余空格;如果是空括号,直接生成空列表。
- 组装结果:把每个filter类型和对应的ports列表打包成元组,收集到最终的结果列表里。
内容的提问来源于stack exchange,提问作者P De
相关产品推荐
相关产品推荐

