我正在用python编写一个程序来处理足球比分的用户输入。例如:
Newcastle United 4 - 6 Manchester united
以上分数也可以写成
NUFC 4-6 MUFC
以及newcastle 4-6 manu
等等......
我的目的是提取团队名称和分数:
Newcastle United
,4
,6
,Manchester United
。
我需要有关如何做到这一点的建议。我能想到的一种方式是正则表达,但我不熟悉正则表达式,所以我在这里寻求帮助。 感谢
答案 0 :(得分:3)
以下正则表达式会这样做:
^(.*?) *(\d+) *- *(\d+) *(.*)$
组:
答案 1 :(得分:2)
这似乎有用......
>>> re.match(r'(.*?)\s*(\d+)\s*\-\s*(\d+)\s*(.*)',s).groups()
('Newcastle United', '4', '6', 'Manchester united')
答案 2 :(得分:1)
一般来说,看起来分数可以被描述为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()
调用中的数字对应于正则表达式中从左到右的括号。