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

Python中如何将文本中的ID与属性分别保存到列表或字典

解决Python中提取ID和属性列表的问题

看起来你已经搞定了ID的提取,就差属性部分啦!别着急,我们可以用两种方式来实现——要么延续你原本的双列表思路,要么用字典让ID和属性的对应关系更直观,还要注意处理第一行里的and分隔符,不然会把attr8和前面的内容拆错哦。

方案1:双列表对应(nodes存ID,skills存属性列表)

这个方案和你最初的想法完全匹配,只需要补充属性处理的逻辑:

file = open("myfile.txt", "r")
lines = file.readlines()
nodes = []
skills = []

for x in lines:
    # 先去掉每行末尾的换行符和多余空格
    line = x.strip()
    # 只按第一个空格分割,避免属性里出现空格(虽然你的例子里没有)导致出错
    id_part, attr_part = line.split(maxsplit=1)
    # 把ID转成整数存入nodes
    nodes.append(int(id_part))
    # 处理属性里的"and",替换成逗号,实现统一分割
    cleaned_attrs = attr_part.replace(" and ", ",")
    # 按逗号分割成属性列表,存入skills
    skills.append(cleaned_attrs.split(","))

file.close()

# 测试输出看看结果
print("Nodes列表:", nodes)
print("Skills列表:", skills)

方案2:用字典存储(键为ID,值为属性列表)

如果想让ID和属性的对应关系更清晰,不用手动维护两个列表的索引,字典会是更合适的选择:

file = open("myfile.txt", "r")
lines = file.readlines()
id_attr_dict = {}

for x in lines:
    line = x.strip()
    id_part, attr_part = line.split(maxsplit=1)
    node_id = int(id_part)
    cleaned_attrs = attr_part.replace(" and ", ",")
    id_attr_dict[node_id] = cleaned_attrs.split(",")

file.close()

# 测试输出看看结果
print("ID-属性字典:", id_attr_dict)

几个关键细节提醒

  • split(maxsplit=1):这个方法只会分割第一个空格,能避免属性内容里如果有空格(比如后续需求变更)导致的分割错误;
  • 处理and:第一行里的attr4 and attr8必须转换成attr4,attr8,这样才能用逗号统一分割所有属性;
  • 更优雅的文件处理:推荐用with语句自动管理文件,不用手动调用close():
nodes = []
skills = []

# with语句会在代码块结束后自动关闭文件
with open("myfile.txt", "r") as file:
    for line in file:
        line = line.strip()
        if not line:  # 跳过空行,避免报错
            continue
        id_part, attr_part = line.split(maxsplit=1)
        nodes.append(int(id_part))
        cleaned_attrs = attr_part.replace(" and ", ",")
        skills.append(cleaned_attrs.split(","))

这样运行后,你就能得到完整的ID集合和对应的属性列表啦!

内容的提问来源于stack exchange,提问作者Lee Yaan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:45:24