我有以下代码,因为vi
的重复,我认为它很糟糕。我怎样才能更好地写出来?
vi = '([a-zA-Z0-9_\-\.]+)'
handlers = [
(r'/register', RegistrationHandler),
(r'/profiles/%s/%s' % (vi, vi), GetProfiles),
(r'/archives/%s/%s/%s/%s' % (vi, vi, vi, vi), GetArchives),
(r'/publish-profiles', PublishProfiles),
(r'/publish-bundle/%s/%s' % (vi, vi), PublishBundle),
(r'/upload-file/%s/%s/%s' % (vi, vi, vi), UploadFile),
(r"/favicon\.ico", tornado.web.StaticFileHandler, dict(path=settings['static_path'])),
]
答案 0 :(得分:7)
如果您使用的是Python 2.6+,则可以使用str.format
:
r'/archives/{0}/{0}/{0}/{0}'.format(vi)
答案 1 :(得分:6)
很容易,尝试命名变量,然后可以访问具有给定名称的变量,任意次。这是一个例子:
"%(vi)s is %(vi)s" % {'vi':vi}
基本上你使用dict替换。然后,您将格式标记从%<options><variabletype>
(例如%2s
)更改为%(<dictKey><options><variabletype>)
(例如%(vi)2s
)
答案 2 :(得分:2)
您可以写n
而不是写vi
重复(vi,)*n
的元组。