我只是想写一个小网页,它可以使用正则表达式解析一些文本,并在表中返回结果匹配。这是我第一次使用python进行web开发,我不得不说,它看起来很混乱。在
我的问题是为什么我只得到数据集中最后一个匹配的输出?我想一定是因为嵌套循环的格式不正确。在
以下是我提供的数据:
groups只是一个与regex组对应的id,它的名称用于提供表的头。在
模式类似于:(\d+)\s(\S+)\s(\S+)$
和数据:
^{pr2}$
我的简单页面:
import re
pattern = form['pattern']
p = re.compile(pattern)
data = form['data']
matches = p.finditer(data)
lines = form['groups'].split("\n")
groupids ={}
for line in lines:
key, val = line.split(' ')
groupids[int(key.strip())] = val.strip()
%>
for k,v in groupids.iteritems():%>
# end
%>
for match in matches:
#begin
%>
for i in range(1, len(match.groups())+1):
#begin
%>
#end
# end
%>
编辑
下面是我做的测试
代码:import re
pattern = "(\d\d\d\d\d)\s(\S+)\s(\S+)"
p = re.compile(pattern)
data = """12345 TESTS USERS
34567 TESTS USERS
56789 TESTS USERS"""
groups = """1 PIN
2 FNAME
3 LNAME"""
matches = p.finditer(data)
lines = groups.split("\n")
print lines
groupids ={}
for line in lines:
key, val = line.split(' ')
groupids[int(key.strip())] = val.strip()
for k,v in groupids.iteritems():
print "%s\t" % v,
print ''
for match in matches:
for i in range(1, len(match.groups())+1):
print "%s\t" % match.group(i),
print ''
输出:PIN FNAME LNAME
12345 TESTS USERS
34567 TESTS USERS
56789 TESTS USERS