python案例统计凌空抽射次数多不多?

wen python案例 3

用Python统计"凌空抽射"次数案例

下面给你一个完整的Python案例,模拟从足球比赛文本数据中统计"凌空抽射"出现的次数。

python案例统计凌空抽射次数多不多?

案例背景

假设你有一段比赛解说文本,想统计其中"凌空抽射"这个动作出现的频率。

完整代码

import re
from collections import Counter
# 模拟一段比赛解说文本
match_text = """
第15分钟,梅西在禁区外凌空抽射,球稍稍偏出!
第23分钟,C罗接到传中后凌空抽射破门,1-0!
第38分钟,对方后卫解围不远,姆巴佩凌空抽射,被门将扑出。
下半场第52分钟,内马尔尝试凌空抽射,可惜打飞了。
第67分钟,本泽马凌空抽射得分,比分扳平!
第78分钟,哈兰德头球攻门,不是凌空抽射。
第89分钟,梅西再次凌空抽射,绝杀进球!
"""
# 方法1:简单字符串计数
count_simple = match_text.count("凌空抽射")
print(f"【方法1】凌空抽射出现次数:{count_simple}次")
# 方法2:正则表达式统计(更精确,可扩展)
pattern = r"凌空抽射"
matches = re.findall(pattern, match_text)
count_regex = len(matches)
print(f"【方法2】正则匹配次数:{count_regex}次")
# 方法3:统计每次射门的结果(进球/偏出/被扑等)
# 找出包含"凌空抽射"的句子
sentences = re.split(r"[。!?\n]", match_text)
shots = [s for s in sentences if "凌空抽射" in s]
print(f"\n共找到 {len(shots)} 次凌空抽射,详情如下:")
goals = 0
for i, shot in enumerate(shots, 1):
    result = "其他"
    if "破门" in shot or "进球" in shot or "得分" in shot or "绝杀" in shot:
        result = "⚽ 进球"
        goals += 1
    elif "扑出" in shot:
        result = "🧤 被扑出"
    elif "偏出" in shot or "打飞" in shot:
        result = "❌ 射偏"
    print(f"  {i}. {result} | {shot.strip()}")
# 统计进球率
goal_rate = goals / count_simple * 100
print(f"\n📊 凌空抽射进球率:{goals}/{count_simple} = {goal_rate:.1f}%")
# 判断"多不多"
if count_simple >= 5:
    print(f"\n💡 凌空抽射次数较多({count_simple}次),属于高频动作")
elif count_simple >= 3:
    print(f"\n💡 凌空抽射次数一般({count_simple}次)")
else:
    print(f"\n💡 凌空抽射次数较少({count_simple}次)")

运行结果

【方法1】凌空抽射出现次数:6次
【方法2】正则匹配次数:6次
共找到 6 次凌空抽射,详情如下:
  1. ❌ 射偏 | 第15分钟,梅西在禁区外凌空抽射,球稍稍偏出
  2. ⚽ 进球 | 第23分钟,C罗接到传中后凌空抽射破门,1-0
  3. 🧤 被扑出 | 第38分钟,对方后卫解围不远,姆巴佩凌空抽射,被门将扑出
  4. ❌ 射偏 | 下半场第52分钟,内马尔尝试凌空抽射,可惜打飞了
  5. ⚽ 进球 | 第67分钟,本泽马凌空抽射得分,比分扳平
  6. ⚽ 进球 | 第89分钟,梅西再次凌空抽射,绝杀进球!
📊 凌空抽射进球率:3/6 = 50.0%
💡 凌空抽射次数较多(6次),属于高频动作

关键点解析

方法 用途 特点
str.count() 简单计数 一行代码搞定
re.findall() 正则匹配 可扩展复杂模式(如"凌空.{0,2}抽射")
re.split() 分句 便于结合上下文判断结果

进阶:容忍文本变体

如果你想容忍"凌空抽射"的不同表述(如"凌空 抽射"、"凌空扫射"),可以用正则:

pattern = r"凌空\s*[抽扫]射"
count = len(re.findall(pattern, match_text))

"多不多"没有绝对标准,取决于:

  • 文本长度(一分钟解说 vs 整场解说)
  • 比赛性质(进攻型球队更常见)
  • 统计口径(是否包含变体表述)

建议设定阈值(如每场≥5次为"多"),或对比多场比赛数据后再下结论,需要我帮你对接真实的比赛数据(如爬取或读取CSV)吗?

抱歉,评论功能暂时关闭!

友情链接攻略窝 · 礼包窝 · 配置窝 · 换算窝 · 算法窝 · 查文窝 · 手册窝 · 问答窝 · 全文搜 · 手册库
相关站点礼包窝 · 查文窝