Python ASCII字符文本对齐
我正在用python编写一个非常小且基本的基于文本的冒险游戏,我希望能够对齐我的标题(ASCII格式) 我已经查过了,但我要么不懂,要么就是没用 以下是ASCII码:Python ASCII字符文本对齐,python,python-2.7,ascii,Python,Python 2.7,Ascii,我正在用python编写一个非常小且基本的基于文本的冒险游戏,我希望能够对齐我的标题(ASCII格式) 我已经查过了,但我要么不懂,要么就是没用 以下是ASCII码: ________ ___ /_ __/ /_ ___ / | ________ ____ ____ _ / / / __ \/ _ \ / /| | / ___/ _ \/ __ \/ __ `/ / / / / / /
________ ___
/_ __/ /_ ___ / | ________ ____ ____ _
/ / / __ \/ _ \ / /| | / ___/ _ \/ __ \/ __ `/
/ / / / / / __/ / ___ |/ / / __/ / / / /_/ /
/_/ /_/ /_/\___/ /_/ |_/_/ \___/_/ /_/\__,_/
(我知道这不是很有创意)
我想让它与中心对齐,可能吗?我会:
- 获取终端窗口(主要是列)的大小-linux命令:“stty-a”,windows命令:“mode con”-并解析cli输出,或在此处执行类似操作:
- 获取文本的最大大小(需要最多列的行)
- 然后:padding\u left=(terminal\u columns-text-max\u columns)/2,天花板或地板根据您的需要设置数字
- 在所有文本行前加上足够多的空格,使padding_left值为
编辑 下面是一个示例(在Linux和Windows下工作): 我想:
- 获取终端窗口(主要是列)的大小-linux命令:“stty-a”,windows命令:“mode con”-并解析cli输出,或在此处执行类似操作:
- 获取文本的最大大小(需要最多列的行)
- 然后:padding\u left=(terminal\u columns-text-max\u columns)/2,天花板或地板根据您的需要设置数字
- 在所有文本行前加上足够多的空格,使padding_left值为
编辑 下面是一个示例(在Linux和Windows下工作):
您可以逐行添加文本居中所需的空格数 这里有一种方法,您必须提供居中的文本和可用的宽度:
def align_center(text, width):
lext = text.split('\n')
for line in lext:
assert len(line) < width, 'insufficient width'
max_w = max(len(line) for line in lext)
res = []
for line in lext:
res.append(' ' * ((width - max_w) // 2))
res.append(line)
res.append('\n')
return ''.join(res)
text = """ ________ ___
/_ __/ /_ ___ / | ________ ____ ____ _
/ / / __ \/ _ \ / /| | / ___/ _ \/ __ \/ __ `/
/ / / / / / __/ / ___ |/ / / __/ / / / /_/ /
/_/ /_/ /_/\___/ /_/ |_/_/ \___/_/ /_/\__,_/ """
centered = align_center(text, 90)
print(centered)
您可以逐行添加文本居中所需的空格数 这里有一种方法,您必须提供居中的文本和可用的宽度:
def align_center(text, width):
lext = text.split('\n')
for line in lext:
assert len(line) < width, 'insufficient width'
max_w = max(len(line) for line in lext)
res = []
for line in lext:
res.append(' ' * ((width - max_w) // 2))
res.append(line)
res.append('\n')
return ''.join(res)
text = """ ________ ___
/_ __/ /_ ___ / | ________ ____ ____ _
/ / / __ \/ _ \ / /| | / ___/ _ \/ __ \/ __ `/
/ / / / / / __/ / ___ |/ / / __/ / / / /_/ /
/_/ /_/ /_/\___/ /_/ |_/_/ \___/_/ /_/\__,_/ """
centered = align_center(text, 90)
print(centered)
您可以使用
str.center
方法。以下代码假定屏幕宽度为80个字符:
s = ''' ________ ___
/_ __/ /_ ___ / | ________ ____ ____ _
/ / / __ \/ _ \ / /| | / ___/ _ \/ __ \/ __ `/
/ / / / / / __/ / ___ |/ / / __/ / / / /_/ /
/_/ /_/ /_/\___/ /_/ |_/_/ \___/_/ /_/\__,_/ '''
print('\n'.join(l.center(80) for l in s.splitlines()))
这将产生:
________ ___
/_ __/ /_ ___ / | ________ ____ ____ _
/ / / __ \/ _ \ / /| | / ___/ _ \/ __ \/ __ `/
/ / / / / / __/ / ___ |/ / / __/ / / / /_/ /
/_/ /_/ /_/\___/ /_/ |_/_/ \___/_/ /_/\__,_/
您可以使用
str.center
方法。以下代码假定屏幕宽度为80个字符:
s = ''' ________ ___
/_ __/ /_ ___ / | ________ ____ ____ _
/ / / __ \/ _ \ / /| | / ___/ _ \/ __ \/ __ `/
/ / / / / / __/ / ___ |/ / / __/ / / / /_/ /
/_/ /_/ /_/\___/ /_/ |_/_/ \___/_/ /_/\__,_/ '''
print('\n'.join(l.center(80) for l in s.splitlines()))
这将产生:
________ ___
/_ __/ /_ ___ / | ________ ____ ____ _
/ / / __ \/ _ \ / /| | / ___/ _ \/ __ \/ __ `/
/ / / / / / __/ / ___ |/ / / __/ / / / /_/ /
/_/ /_/ /_/\___/ /_/ |_/_/ \___/_/ /_/\__,_/
不要自己键入ASCII艺术-使用text2art:
from art import *
text2art("The Arena")
另一种选择是:
from art import *
tprint("The Arena")
要使其居中,请执行以下操作:
from art import *
string="The Arena"
new_string = string.center(90)
tprint(new_string)
或者(改用text2art
):
不要自己键入ASCII艺术-使用text2art:
from art import *
text2art("The Arena")
另一种选择是:
from art import *
tprint("The Arena")
要使其居中,请执行以下操作:
from art import *
string="The Arena"
new_string = string.center(90)
tprint(new_string)
或者(改用text2art
):
你能用傻话来形容吗?我才刚刚开始学习python。谢谢你,伙计,我已经决定使用另一种方法,但你的方法确实奏效了!你能用傻话来形容吗?我才刚刚开始学习python。谢谢你,伙计,我已经决定使用另一种方法,但你的方法确实奏效了!这是很久以前的事了,我最终找到了text2art或类似的东西,使用起来更容易。谢谢,尽管如此。@FrancoisvanKempen很多人更喜欢text2art,尽管我个人最喜欢的是tprint。我相信我用了colorama和tprint?我真的不记得了,这是两年前的一项评估任务。这是很久以前的事了,我最终找到了text2art或类似的东西,并使用了它,这要容易得多。谢谢,尽管如此。@FrancoisvanKempen很多人更喜欢text2art,尽管我个人最喜欢的是tprint。我相信我用了colorama和tprint?我真的不记得了,那是两年前的一次评估任务。