You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何根据service id提取对应pmtpid和pidlist参数

问题排查与修复方案

现有代码的问题

  • 按:拆分整条记录后,所有键值对处于平级状态,当前逻辑仅能匹配输出包含输入service id的单个键值对(也就是serviceid=xxx项),无法提取同一条服务记录下的其他参数
  • 未做精确匹配,仅判断输入值是否存在于键值对字符串中,容易出现误匹配(比如输入251,刚好其他参数值包含251也会被命中)
  • 没有考虑文件中存在多条服务记录的通用场景

修复后可用代码

# 读取文件内容,按行拆分适配多服务记录场景
with open('t5001.txt', 'r', encoding='utf-8') as f:
    service_lines = f.read().splitlines()

target_sid = input("Enter The Service ID :- ").strip()
found = False

for line in service_lines:
    # 跳过空行
    if not line.strip():
        continue
    # 拆分键值对,转成字典方便取值
    service_info = {}
    for kv in line.split(':'):
        if '=' in kv:
            k, v = kv.split('=', 1)
            service_info[k.strip()] = v.strip()
    # 精确匹配serviceid
    if service_info.get('serviceid') == target_sid:
        print(f"pmtpid: {service_info.get('pmtpid', '未找到')}")
        print(f"pidlist: {service_info.get('pidlist', '未找到')}")
        found = True
        break

if not found:
    print(f"未找到serviceid为{target_sid}的记录")

代码说明

  • 用with语句管理文件句柄,无需手动调用close方法,避免资源泄露
  • 先把每行记录的所有键值对转成Python字典,后续可直接通过key取值,扩展性更强
  • 做精确匹配,只有serviceid的值完全等于输入值时才命中,避免误匹配
  • 兼容文件内存在多条服务记录的场景

内容的提问来源于stack exchange,提问作者hemant verma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:24:00