从用户输入中提取足球成绩

0 投票
3 回答
1476 浏览
提问于 2025-04-17 14:51

我正在用Python写一个程序,主要是处理用户输入的足球比分。比如说:

纽卡斯尔联 4 - 6 曼联

这个比分也可以写成:

NUFC 4-6 MUFC,还可以写成 newcastle 4-6 manu,等等……

我的目的是提取出球队名称和比分:纽卡斯尔联46曼联

我需要一些建议,看看怎么实现这个功能。我想到的一种方法是使用正则表达式,但我对正则表达式不太熟悉,所以在这里寻求帮助。谢谢!

3 个回答

2

这看起来有效...

>>> re.match(r'(.*?)\s*(\d+)\s*\-\s*(\d+)\s*(.*)',s).groups()
('Newcastle United', '4', '6', 'Manchester united')
3

下面这个正则表达式可以实现这个功能:

^(.*?) *(\d+) *- *(\d+) *(.*)$

分组说明:

  • 组 1:左边的队伍
  • 组 2:左边队伍的得分
  • 组 3:右边队伍的得分
  • 组 4:右边的队伍
1

一般来说,一个分数可以被描述为五个部分的列表:

  1. 随便的文字
  2. 一串数字
  3. 一个连字符(-)
  4. 另一串数字
  5. 随便的文字

而且在连字符的两边可能会有空格,也可能没有。

下面的代码应该可以正常工作:

g = re.match("(.*) ([0-9]+) ?- ?([0-9]+) (.*)", user_input)
if g:
    team1 = g.group(1)
    team1_score = g.group(2)
    team2_score = g.group(3)
    team2 = g.group(4)

在调用 group() 的时候,里面的数字对应着正则表达式中的括号,从左到右排列。

撰写回答