我正在用python编写一个程序,它将处理用户输入的足球比分。例如:Newcastle United 4 - 6 Manchester united
上面的分数也可以写成
NUFC 4-6 MUFC
,还有as newcastle 4-6 manu
等等......
我的目的是提取团队名称和得分:Newcastle United
,4
,6
,Manchester United
。
我需要关于如何做到这一点的建议。我能想到的一种方法是正则表达式,但我不太熟悉正则表达式,所以我在这里寻求帮助。谢谢
发布于 2013-02-06 03:07:04
一般来说,分数可以用5个项目的列表来描述:
digits
并且连字符的两侧可能有空格,也可能没有空格。
下面的代码应该可以工作:
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-06 03:06:04
下面的正则表达式可以做到这一点:
^(.*?) *(\d+) *- *(\d+) *(.*)$
组:
发布于 2013-02-06 03:05:56
这似乎起作用了..。
>>> re.match(r'(.*?)\s*(\d+)\s*\-\s*(\d+)\s*(.*)',s).groups()
('Newcastle United', '4', '6', 'Manchester united')
https://stackoverflow.com/questions/14714886
复制相似问题