从用户输入中提取足球成绩
我正在用Python写一个程序,主要是处理用户输入的足球比分。比如说:
纽卡斯尔联 4 - 6 曼联
这个比分也可以写成:
NUFC 4-6 MUFC
,还可以写成 newcastle 4-6 manu
,等等……
我的目的是提取出球队名称和比分:纽卡斯尔联
、4
、6
、曼联
。
我需要一些建议,看看怎么实现这个功能。我想到的一种方法是使用正则表达式,但我对正则表达式不太熟悉,所以在这里寻求帮助。谢谢!
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
一般来说,一个分数可以被描述为五个部分的列表:
- 随便的文字
- 一串数字
- 一个连字符(-)
- 另一串数字
- 随便的文字
而且在连字符的两边可能会有空格,也可能没有。
下面的代码应该可以正常工作:
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()
的时候,里面的数字对应着正则表达式中的括号,从左到右排列。