首页 > 解决方案 > 输入()后如何在python 3中居中文本?

问题描述

我真的无法在网上找到任何真正有帮助的东西,所以我想我会问自己。我有以下代码:

username = input()
username = username.capitalize()
print("Hello " + username ) # I want this to be centered 

我希望打印语句以正在运行的任何控制台为中心。谢谢您的帮助!

标签: pythonpython-3.xsyntax

解决方案


这有两个部分。


首先,您需要获取控制台宽度。你用shutil.get_terminal_size.

由于并非总是可以获得控制台宽度——就此而言,甚至可能没有例如,如果您的程序的标准输出被重定向到一个文件并且甚至没有终端),它将回退到 80 列(尽管您可以根据需要覆盖它):

cols, rows = shutil.get_terminal_size()

现在你只是center那个宽度的字符串。字符串包含用户输入的事实并不重要。一旦你连接"Hello "and username,你就得到了一个str与任何其他字符串对象一样工作的 a 。所以:

print(("Hello " + username).center(cols))

如果用户的输入可能太长而无法容纳在一行中,则需要先将其换行,然后将行居中。您可以使用该textwrap模块:

for line in textwrap.wrap("Hello " + username, cols):
    print(line.center(cols))

推荐阅读