在通用字符上对齐字符串

问题描述

我正在寻找一种使用最少的计算和循环的简单,Python方式的方法

我有一堆字符串,例如:

1 + 2 = 3

2*6 + 13 = 25

我想在屏幕上打印的是:

xxx1 + 2 = 3

2*6 + 13 = 25

x实际上是空格,但我不知道如何使用此编辑器显示它)

我知道左右对齐的字符串格式化,但这意味着每个字符串都要计算要添加的空格数,将其转换为字符串,然后将其注入到字符串对齐格式化程序中,这似乎很复杂。

有没有更简单的方法

解决方法

根据您提供的信息,这可能会起作用:

lst = [
'1 + 2 = 3','2*6 + 13 = 25','2*6 = 12','2 = 12 - 10'
]

mxleft = max([e.index('=') for e in lst])

l2 = [e.split('=')[0].rjust(mxleft) + '=' + e.split('=')[1] for e in lst]

print('\n'.join(l2))

输出

   1 + 2 = 3
2*6 + 13 = 25
     2*6 = 12
       2 = 12 - 10
,

如果您知道相等信号之前的最大字符串大小,则可以将字符串拆分为信号,然后使用格式方法(https://pyformat.info/)将其合并。如果您不知道,则必须先检查它,而执行此操作的最佳方法取决于您存储字符串的方式。

string = '1+4+3=2'
split = string.split('=')

new_string = '{:>10}={}'.format(*split)