Python 3 字符串格式化(对齐)

3
我有一段代码,输出应该是这样的:
    hello   3454
    nice     222
    bye    45433
    well    3424

排列和右对齐给我带来了问题。 我在我的字符串中尝试了这个{0:>7},但只有具有特定位数的数字才是正确的。其他具有更多或更少数字的数字变得混乱。很明显可以理解为什么它们会出错,但我很难找到解决方案。我不想为了这样一个小问题到处使用常量和if语句。有什么想法吗?

你能发布一下代码吗? - Alvaro
抱歉,我们不允许发布作业代码。 - amin
1
我相信你也不被允许要求作业答案。 - sPaz
您的示例输出中没有任何字段显示正确对齐。也许您没有使用“?”进行发布?否则,您不需要任何格式,看起来您只需要打印一堆值。 - cdarke
@cdarke 抱歉,代码未能正确打印。 - amin
显示剩余5条评论
1个回答

9
您可以尝试以下方法:
对于数字,使用"{:>10d}".format(n)进行左侧填充。
对于字符串,使用"{:>10s}".format(s)进行左侧填充。
注意:选择10是任意的。建议先确定最大长度。
另外,此链接包含有关字符串格式化的一些信息:字符串格式化
def align(word, number):
    return "{:<10s}{:>10d}".format(word, number)

这将使用10个空格在右侧填充您的字符串,并使用10个空格在左侧填充您的数字,从而得到所需的结果。 示例:
align('Hello', 3454)
align('nice', 222)
align('bye', 45433)
align('well', 3424)

我尝试了这个,但是它给了我相同的输出。Python中的这个对齐系统是如何工作的? - amin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接