use*_*003 0 python regex string pattern-matching python-3.x
我正在尝试找到一种方法来匹配和合并来自以下字符串的球队名称。我用正则表达式尝试了几种不同的方法,但是没有成功。几个例子:
'30 Detroit Red Wings 12 47:06 3 8 1 3 7 0.292'
'31 Los Angeles Kings 11 47:45 4 7 0 4 8'
24 Anaheim Ducks 12 47:49 7 5 0 7 14 0.583
我希望输出看起来像这样:
[30, 'Detroit Red Wings', 12, 47:06, 3, 8, 1, 3, 7, 0.292]
[24, 'Anaheim Ducks', 12, 47:49, 7, 5, 0, 7, 14, 0.583]
这是我使用正则表达式尝试的方法,但没有成功:
pattern = re.compile(r'\b\w+\b')
matches = pattern.finditer(i)
Run Code Online (Sandbox Code Playgroud)
这是使用的选项re.findall:
inp = '30 Detroit Red Wings 12 47:06 3 8 1 3 7 0.292'
matches = re.findall(r'\d+:\d+|\d+(?:\.\d+)?|[A-Za-z]+(?: [A-Za-z]+)*', inp)
print(matches)
Run Code Online (Sandbox Code Playgroud)
打印:
['30', 'Detroit Red Wings', '12', '47:06', '3', '8', '1', '3', '7', '0.292']
Run Code Online (Sandbox Code Playgroud)
使用的正则表达式模式匹配时间字符串,整数/浮点数或一系列仅字母的单词:
\d+:\d+ match a time string (e.g. '47:06')
| or
\d+(?:\.\d+)? match an integer/floating point number
| or
[A-Za-z]+(?: [A-Za-z]+)* match a series of words (e.g. Detroit Red Wings)
Run Code Online (Sandbox Code Playgroud)