Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 编写此代码的更好方法?_Python_Idioms - Fatal编程技术网

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)