Python 编写此代码的更好方法?
我有下面的代码,我认为它很臭,因为重复了Python 编写此代码的更好方法?,python,idioms,Python,Idioms,我有下面的代码,我认为它很臭,因为重复了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-profi
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'])),
]
您可以编写
(vi,)*n
这很容易,尝试命名变量,然后可以使用给定名称多次访问变量。以下是一个例子:
"%(vi)s is %(vi)s" % {'vi':vi}
基本上,你用dict来代替。然后将格式从
%
(例如%2s
)更改为%()
(例如%(vi)2s
)如果您使用的是Python 2.6+,则可以使用:
谢谢有什么方法可以避免我必须指定
vi
s的总数吗?我在答案中没有找到比OP的代码更好的建议。此外,您可以将vi
简化为([a-zA-Z0-9.-]+)
或只是[\w.-]
@thg435,谢谢。那也有帮助@thg435,对不起,它没用。我有点和破折号要处理。对投票结束的人说:“但这个问题可能会引起辩论、争论、投票或广泛的讨论。”这类事情从未发生过,我认为这种情况在任何时候都不太可能发生。为什么不试试别的方法来发泄你个人生活中的挫折呢?看起来不错。谢谢谢谢这看起来比@ted建议的更好。或者,结合@ted的答案r'/archives/{vi}/{vi}/{vi}'。格式(vi=vi)
r'/archives/{0}/{0}/{0}/{0}'.format(vi)