首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从用户输入中提取足球比分

从用户输入中提取足球比分
EN

Stack Overflow用户
提问于 2013-02-06 03:01:12
回答 3查看 1.2K关注 0票数 0

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

上面的分数也可以写成

NUFC 4-6 MUFC,还有as newcastle 4-6 manu等等......

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-06 03:07:04

一般来说,分数可以用5个项目的列表来描述:

digits

  • arbitrary
  1. a string of digits
  2. a string of digits
  3. arbitrary text
  4. a string of digits
  5. arbitrary text

并且连字符的两侧可能有空格,也可能没有空格。

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

代码语言:javascript
运行
复制
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()调用中的数字从左到右对应于正则表达式中的括号。

票数 1
EN

Stack Overflow用户

发布于 2013-02-06 03:06:04

下面的正则表达式可以做到这一点:

代码语言:javascript
运行
复制
^(.*?) *(\d+) *- *(\d+) *(.*)$

组:

  • 组1: Left team
  • 组2: Left team score
  • 组3: right team score
  • 组4: right team
票数 3
EN

Stack Overflow用户

发布于 2013-02-06 03:05:56

这似乎起作用了..。

代码语言:javascript
运行
复制
>>> re.match(r'(.*?)\s*(\d+)\s*\-\s*(\d+)\s*(.*)',s).groups()
('Newcastle United', '4', '6', 'Manchester united')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14714886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档