从用户输入中提取足球得分

时间:2013-02-05 19:01:12

标签: python regex python-2.7

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

以上分数也可以写成

NUFC 4-6 MUFC以及newcastle 4-6 manu等等......

我的目的是提取团队名称和分数: Newcastle United46Manchester United

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

3 个答案:

答案 0 :(得分:3)

以下正则表达式会这样做:

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

组:

  • 第1组:左队
  • 第2组:左队评分
  • 第3组:正确的团队得分
  • 第4组:合适的团队

答案 1 :(得分:2)

这似乎有用......

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

答案 2 :(得分:1)

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

  1. 任意文字
  2. 一串数字
  3. 连字符
  4. 一串数字
  5. 任意文字
  6. 并且连字符的两边可能有也可能没有空格。

    以下内容应该有效:

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