如何用正则表达式从Pandas数据集的足球比分字符串提取主客场进球数
用正则表达式提取足球比分中的主客队进球数
完全可以用单个正则表达式搞定两种比分格式的提取,不用分开写两个。核心思路是精准匹配比分里-两侧的实际进球数字,自动忽略前后的点球决胜括号内容。
正则表达式写法
(?:\(\d+\)\s*)?(\d+)-(\d+)(?:\s*\(\d+\))?
正则各部分说明
(?:\(\d+\)\s*)?:匹配前面可能存在的点球数(比如(5))和后续空格,?:表示这是个非捕获组(不会提取这部分内容),?表示该部分可选(标准比分没有这部分时自动忽略)(\d+):第一个捕获组,提取主队进球数-:匹配比分的分隔符(\d+):第二个捕获组,提取客队进球数(?:\s*\(\d+\))?:匹配后面可能存在的点球数(比如(4))和前面空格,同样是非捕获可选组
Pandas中实际使用示例
import pandas as pd # 模拟你的数据集 df = pd.DataFrame({ 'score': ["4-2", "(5) 2-3 (4)", "1-1", "(3) 0-0 (5)"] }) # 提取主客队进球数,生成新列 df[['主队进球', '客队进球']] = df['score'].str.extract(r'(?:\(\d+\)\s*)?(\d+)-(\d+)(?:\s*\(\d+\))?') print(df)
运行后输出结果:
score 主队进球 客队进球 0 4-2 4 2 1 (5) 2-3 (4) 2 3 2 1-1 1 1 3 (3) 0-0 (5) 0 0
完美覆盖两种比分格式的提取需求,不需要额外处理不同格式的分支逻辑。
内容的提问来源于stack exchange,提问作者Ewan
相关产品推荐
相关产品推荐

