0

我正在用 python 编写一个程序,它将处理用户输入的足球比分。例如: Newcastle United 4 - 6 Manchester united

上面的分数也可以写成

NUFC 4-6 MUFC还有 asnewcastle 4-6 manu等等……

我的目的是提取队名和分数: Newcastle United, 4, 6, Manchester United.

我需要关于如何做到这一点的建议。我能想到的一种方法是正则表达式,但我并不精通正则表达式,所以我在这里寻求帮助。谢谢

4

3 回答 3

3

以下正则表达式会做到这一点:

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

团体:

  • 第一组:左队
  • 第 2 组:左队得分
  • 第 3 组:正确的球队得分
  • 第 4 组:正确的团队
于 2013-02-05T19:06:04.257 回答
2

这似乎工作......

>>> re.match(r'(.*?)\s*(\d+)\s*\-\s*(\d+)\s*(.*)',s).groups()
('Newcastle United', '4', '6', 'Manchester united')
于 2013-02-05T19:05:55.983 回答
1

一般来说,一个分数看起来可以描述为一个包含 5 个项目的列表:

  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()对应于正则表达式中的括号,从左到右。

于 2013-02-05T19:07:04.333 回答