Python-使用正则表达式获取用户数据

Python-使用正则表达式获取用户数据,python,regex,Python,Regex,所以,我还是一个使用正则表达式和python的新手。我已经找了一段时间,但不知道如何问我在找什么 我需要将格式化字符串中的数据放入列表列表或字典中 ------------------------------------------------------------------- Frank 114 0 0 0 0 114 Joe 49 1

所以,我还是一个使用正则表达式和python的新手。我已经找了一段时间,但不知道如何问我在找什么

我需要将格式化字符串中的数据放入列表列表或字典中

-------------------------------------------------------------------
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()
。这假设了数据的外观,而正则表达式没有,但我还是从这里开始。这很完美。无论如何,我需要在比赛中循环,所以这将为我节省一步。它还让我可以添加到我的正则表达式中,并在将来从其他列中提取,而不会得到臃肿的列表。这太完美了。无论如何,我需要在比赛中循环,所以这将为我节省一步。它还允许我添加到我的正则表达式中,并在将来从其他列中提取,而不会得到臃肿的列表。