在公共字符上对齐字符串
Align strings over a common character
我正在寻找一种简单的 pythonic 方法,用最少的计算和循环来做到这一点。
我有一堆字符串,比如:
1 + 2 = 3
2*6 + 13 = 25
我想在屏幕上打印的是:
xxx1 + 2 = 3
2*6 + 13 = 25
(其中 x
实际上是空格,但我不知道如何用这个编辑器显示它)
我知道左右对齐的字符串格式,但这意味着每个字符串都需要计算要添加的空格数,将其转换为字符串,然后将其注入字符串对齐格式化程序,这看起来很复杂。
有没有更简单的方法?
如果您知道相等信号之前字符串的最大大小,您可以将字符串拆分为信号,然后使用格式化方法 (https://pyformat.info/) 将其合并。如果您不知道,则必须先检查一下,最好的方法取决于您存储字符串的方式。
string = '1+4+3=2'
split = string.split('=')
new_string = '{:>10}={}'.format(*split)
根据您提供的信息,这可能有效:
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
我正在寻找一种简单的 pythonic 方法,用最少的计算和循环来做到这一点。
我有一堆字符串,比如:
1 + 2 = 3
2*6 + 13 = 25
我想在屏幕上打印的是:
xxx1 + 2 = 3
2*6 + 13 = 25
(其中 x
实际上是空格,但我不知道如何用这个编辑器显示它)
我知道左右对齐的字符串格式,但这意味着每个字符串都需要计算要添加的空格数,将其转换为字符串,然后将其注入字符串对齐格式化程序,这看起来很复杂。
有没有更简单的方法?
如果您知道相等信号之前字符串的最大大小,您可以将字符串拆分为信号,然后使用格式化方法 (https://pyformat.info/) 将其合并。如果您不知道,则必须先检查一下,最好的方法取决于您存储字符串的方式。
string = '1+4+3=2'
split = string.split('=')
new_string = '{:>10}={}'.format(*split)
根据您提供的信息,这可能有效:
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