我的数据如下:
'DOMA A\r\nName: Ryan\r\nBest: 1\r\nAlias: 3K\r\nLocation: Eng\r\nGame Wins: 51\r\nTime: 09:10:50'
在使用regex模式查找所有东西时有一些问题..。
pattern1 = re.compile('DOMA: (.*)\r\n')
pattern2 = re.compile('Name: (.*)\r\n')
pattern3 = re.compile('Best: (.*)\r\n')
pattern4 = re.compile('Location: (.*)\r\n')
pattern5 = re.compile('Game Wins: (.*)\r\n')
pattern6 = re.compile('Time: (.*)')
然而,上述所有工作,有时我的数据看起来都是:'DOMA A\r\nName: Ryan\r\nBest: 1\r\nAlias: 3K\r\nLocation: Eng\r\nGame Wins: 51\r\nTime: 09:10:50\r\nREF: Yes'
Pattern6,返回错误,因为它没有/r/n。我怎样才能绕开它,这样它就只能返回当前线路上的内容.
模式6应该是:
pattern6 = re.compile(r'Time: (.*)')
或
pattern6 = re.compile('Time: (.*?)')
或
pattern6 = re.compile(r'Time: (.*?)')
提前谢谢-希弗莱
发布于 2013-08-25 06:53:12
使定界符\r\n
或$
(在regex中的意思是“string的结束”)也-而不是多个模式,只需使用一个通用模式,并将其放在字典中,然后在后面提取命名的部分:
s = 'DOMA A\r\nName: Ryan\r\nBest: 1\r\nAlias: 3K\r\nLocation: Eng\r\nGame Wins: 51\r\nTime: 09:10:50'
import re
res = dict(re.findall(r'(.*?): (.*?)(?:\r\n|$)', s))
# {'Name': 'Ryan', 'Alias': '3K', 'Location': 'Eng', 'Time': '09:10:50', 'Game Wins': '51', 'Best': '1'}
https://stackoverflow.com/questions/18430155
复制