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

如何修正网球赛事比分提取代码,确保比分顺序正确?

修正网球赛事比分提取的方法

问题核心

提取错误的根源是正则匹配的区间定位偏差,导致误将属于p2的比分提取给p1,或者匹配顺序颠倒。

修正方案

  • 精准正则分组匹配:通过正则表达式锁定两个选手对应的比分区间,严格遵循需求定义的提取范围:

    1. 捕获D. Altmaier之后、M. Kecmanovic之前的所有数字(含空格)作为p1_score
    2. 捕获M. Kecmanovic之后、末尾非比分内容之前的所有数字(含空格)作为p2_score
  • 代码实现:

    import re
    import pandas as pd
    
    def extract_match_scores(match_str):
        # 定义正则模式,分组匹配目标比分
        pattern = r'D\. Altmaier\s+([\d\s]+)\s+M\. Kecmanovic\s+([\d\s]+)\s*(?:\[[^\]]+\]|.*)?$'
        match_result = re.search(pattern, match_str)
        if match_result:
            # 清理比分中的冗余空格,输出标准格式
            p1 = ' '.join(match_result.group(1).split())
            p2 = ' '.join(match_result.group(2).split())
            return pd.Series([p1, p2], index=['p1_score', 'p2_score'])
        return pd.Series([None, None], index=['p1_score', 'p2_score'])
    
    # 批量处理DataFrame中的赛事字符串列(假设列名为match_info)
    df[['p1_score', 'p2_score']] = df['match_info'].apply(extract_match_scores)
    
  • 关键细节说明:

    • 正则部分(?:\[[^\]]+\]|.*)?$用来匹配比分后的附加信息(如场地、赛事备注),避免干扰核心比分提取
    • split()+join()组合用于清除比分中可能存在的连续空格,保证输出格式统一
    • 返回pd.Series可直接批量生成DataFrame的两列结果,提升处理效率

测试验证

若输入赛事字符串为:"D. Altmaier 4 4 M. Kecmanovic 6 4 [Grand Slam - Center Court]",执行代码后:

  • p1_score 结果为 "4 4"
  • p2_score 结果为 "6 4"

内容的提问来源于stack exchange,提问作者Raphael Ambit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:13:25