我创建了一个正则表达式来查找像/places/:state/:city/whatever
p = re.compile('^/places/(?P<state>[^/]+)/(?P<city>[^/]+).*$')
这工作得很好:
import re
p = re.compile('^/places/(?P<state>[^/]+)/(?P<city>[^/]+).*$')
path = '/places/NY/NY/other/stuff'
match = p.match(path)
print match.groupdict()
打印{'city': 'NY', 'state': 'NY'}
。
如何处理日志文件以替换/places/NY/NY/other/stuff
为字符串"/places/:state/:city/other/stuff"
?我想了解有多少网址属于“城市类型”,而不关心这些地方具体是 ( NY
, NY
)。
简单的方法可能会失败:
import re
p = re.compile('^/places/(?P<state>[^/]+)/(?P<city>[^/]+).*$')
path = '/places/NY/NY/other/stuff'
match = p.match(path)
if match:
groupdict = match.groupdict()
for k, v in sorted(groupdict.items()):
path = path.replace(v, ':' + k, 1)
print path
将打印/places/:city/:state/other/stuff
,这是倒退!
感觉应该有某种使用方法,re.sub
但我看不到。