右对齐打印值的Pythonic方法是什么?
我有一个字符串列表,我想按后缀对其进行分组,然后右对齐打印值,并用空格填充左侧。
pythonic 方法是什么?
我当前的代码是:
def find_pos(needle, haystack):
for i, v in enumerate(haystack):
if str(needle).endswith(v):
return i
return -1
# Show only Error and Warning things
search_terms = "Error", "Warning"
errors_list = filter(lambda item: str(item).endswith(search_terms), dir(__builtins__))
# alphabetical sort
errors_list.sort()
# Sort the list so Errors come before Warnings
errors_list.sort(lambda x, y: find_pos(x, search_terms) - find_pos(y, search_terms))
# Format for right-aligning the string
size = str(len(max(errors_list, key=len)))
fmt = "{:>" + size + "s}"
for item in errors_list:
print fmt.format(item)
我想到的另一种选择是:
size = len(max(errors_list, key=len))
for item in errors_list:
print str.rjust(item, size)
我仍在学习Python,因此也欢迎其他有关改进代码的建议。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
非常接近。
Very close.
这两个排序步骤可以合并为一个:
通常,使用
key
参数优于使用cmp
。 排序文档如果您对长度感兴趣,请使用
max()
的 >key 参数有点毫无意义。我会去由于长度在循环内不会改变,我只会准备一次格式字符串:
在循环内,您现在可以使用免费的
format()
函数 (即不是str
方法,但内置函数):str.rjust(item, size)< /code> 通常且最好写为
item.rjust(size)
.The two sorting steps can be combined into one:
Generally, using the
key
parameter is preferred over usingcmp
. Documentation on sortingIf you are interested in the length anyway, using the
key
parameter tomax()
is a bit pointless. I'd go forSince the length does not change inside the loop, I'd prepare the format string only once:
Inside the loop, you can now do with the free
format()
function (i.e. not thestr
method, but the built-in function):str.rjust(item, size)
is usually and preferrably written asitem.rjust(size)
.您可能需要查看此处,其中描述了如何正确-使用 str.rjust 并使用打印格式进行调整。
You might want to look here, which describes how to right-justify using str.rjust and using print formatting.