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

Python文本文件处理:实现球队与所属节点的映射反转

嘿,这事儿不难!我来给你梳理下后续的处理逻辑,直接上代码加解释,一看就懂~

核心思路与实现代码

我们需要用一个字典来映射每个球队和它所属的所有节点编号,然后按步骤处理每行数据,最后输出成要求的格式。以下是完整的处理代码(包含文件读写,如果你已经打开了文件,也可以适配进去):

# 初始化一个字典,用来存球队对应的节点列表
team_node_map = {}

# 读取输入文件(如果已经打开文件,直接用你的文件对象遍历即可)
with open('input.txt', 'r', encoding='utf-8') as input_file:
    for line in input_file:
        # 先去掉行首尾的空白,跳过空行
        clean_line = line.strip()
        if not clean_line:
            continue
        
        # 拆分节点编号和球队部分:只拆分一次,避免球队名称里的空格被拆分
        node_part, teams_part = clean_line.split(maxsplit=1)
        node_id = node_part.strip()
        # 把球队部分按逗号拆分,得到单个球队,同时清理每个球队名称的空格
        teams = [team.strip() for team in teams_part.split(',')]
        
        # 遍历每个球队,更新字典
        for team in teams:
            if team not in team_node_map:
                team_node_map[team] = []
            # 将当前节点编号加入该球队的列表
            team_node_map[team].append(node_id)

# 写入新文件
with open('output.txt', 'w', encoding='utf-8') as output_file:
    # 可以按球队名称排序输出,也可以保留原出现顺序
    for team in sorted(team_node_map.keys()):
        # 把节点列表转成逗号分隔的字符串
        nodes_str = ','.join(team_node_map[team])
        output_file.write(f"{team} {nodes_str}\n")
关键细节说明
  • split(maxsplit=1):这个很重要!因为像"atalanta bilbao"这种带空格的球队名称,不能用普通的split()拆分,只拆一次就能精准分离节点编号和所有球队的部分。
  • team.strip():处理球队名称前后可能的空格(比如输入里的" cska"),避免同一个球队因为空格被当成不同键。
  • 排序输出:用sorted(team_node_map.keys())可以让输出的球队按字母顺序排列,如果你想保持球队在原文件中第一次出现的顺序,Python 3.7+的字典本身就是有序的,直接遍历team_node_map即可。

测试你的输入后,输出会符合预期,比如:

real madrid 1
barcelona 1,9
chelsea 1,2
...

内容的提问来源于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 08:27:34