Python-使用正则表达式获取用户数据
所以,我还是一个使用正则表达式和python的新手。我已经找了一段时间,但不知道如何问我在找什么 我需要将格式化字符串中的数据放入列表列表或字典中Python-使用正则表达式获取用户数据,python,regex,Python,Regex,所以,我还是一个使用正则表达式和python的新手。我已经找了一段时间,但不知道如何问我在找什么 我需要将格式化字符串中的数据放入列表列表或字典中 ------------------------------------------------------------------- Frank 114 0 0 0 0 114 Joe 49 1
-------------------------------------------------------------------
Frank 114 0 0 0 0 114
Joe 49 1 0 0 0 50
Bob 37 0 0 0 0 37
Sally 34 2 0 0 0 36
这是脚本的输出。目前我有:
match_list = []
match = re.search('\n(\w+)\s+(\d*)\s+(\d*)', output)
if match:
match_list.append([match.group(1),
match.group(2),
match.group(3)])
>>>print match_list
[['frank', '114', '0']]
这很完美,只是我需要匹配列表
返回:
[['frank', '114', '0'],
['Joe', '49', '1'],
['Bob', '37', '0'],
['Sally', '34', '2']]
我最初的想法是进行for循环,检查match.group(1)是否已经列出,如果已经列出,则转到下一个,但后来我意识到我不知道如何做。但你有它。我很难弄明白这一点。任何帮助都太好了!:)
哦,还有。列表大小会改变。有时可能只有一个用户,有时可能有20个用户。所以我可以设置一个巨大的静态正则表达式。(据我所知…您可以使用:
或
与oneliner相同的解决方案:
match_list = map(list, re.findall('\n(\w+)\s+(\d*)\s+(\d*)', output))
您可以使用:
或
与oneliner相同的解决方案:
match_list = map(list, re.findall('\n(\w+)\s+(\d*)\s+(\d*)', output))
您不需要正则表达式:
table="""\
-------------------------------------------------------------------
Frank 114 0 0 0 0 114
Joe 49 1 0 0 0 50
Bob 37 0 0 0 0 37
Sally 34 2 0 0 0 36"""
print [line.split() for line in table.splitlines()[1:]]
或者,如果您想要正则表达式:
print [list(t) for t in re.findall(r'^(\w+)'+r'\s+(\d+)'*6,table,re.MULTILINE)]
无论哪种情况,打印:
[['Frank', '114', '0', '0', '0', '0', '114'],
['Joe', '49', '1', '0', '0', '0', '50'],
['Bob', '37', '0', '0', '0', '0', '37'],
['Sally', '34', '2', '0', '0', '0', '36']]
您不需要正则表达式:
table="""\
-------------------------------------------------------------------
Frank 114 0 0 0 0 114
Joe 49 1 0 0 0 50
Bob 37 0 0 0 0 37
Sally 34 2 0 0 0 36"""
print [line.split() for line in table.splitlines()[1:]]
或者,如果您想要正则表达式:
print [list(t) for t in re.findall(r'^(\w+)'+r'\s+(\d+)'*6,table,re.MULTILINE)]
无论哪种情况,打印:
[['Frank', '114', '0', '0', '0', '0', '114'],
['Joe', '49', '1', '0', '0', '0', '50'],
['Bob', '37', '0', '0', '0', '0', '37'],
['Sally', '34', '2', '0', '0', '0', '36']]
你是否有理由必须使用正则表达式(比如作业要求),或者你可以使用任何有效的方法?不,这不是作业。我只是在跟踪数据。我希望将它保存在regex中,因为我被告知它非常有用,并且希望更熟悉它。如果有一个非常简单的方法,我会同意的。你有什么理由必须使用正则表达式(比如赋值要求)或者你能使用任何有效的方法吗?不,这不是赋值。我只是在跟踪数据。我希望将它保存在regex中,因为我被告知它非常有用,并且希望更熟悉它。如果有一种非常简单的方法,我会同意的。这与我会做的类似,只是我使用了
.splitlines()
。这假设了数据的外观,而正则表达式没有,但我还是从这里开始。这与我本来会做的类似,只是我使用了.splitlines()
。这假设了数据的外观,而正则表达式没有,但我还是从这里开始。这很完美。无论如何,我需要在比赛中循环,所以这将为我节省一步。它还让我可以添加到我的正则表达式中,并在将来从其他列中提取,而不会得到臃肿的列表。这太完美了。无论如何,我需要在比赛中循环,所以这将为我节省一步。它还允许我添加到我的正则表达式中,并在将来从其他列中提取,而不会得到臃肿的列表。