python格式化字符串输出多行时,当遇到每一行的内容长短不同时,就会出现对不齐的情况,示例如下,最后输出结果里面,歌曲名这一列的长短不一,导致歌手这一列没有对齐,请问有什么解决办法吗?
a = '{0:^3} {1:*^31} {2:*^20}'.format('序号', '歌曲名', '歌手')
print(a)
music_list = [(1,'就大水电费水电费佛寺丰','sd水电费'), (2,'那大丰','电费'), (1,'就大佛寺那fddfg深粉色gdgdf大丰','sd水fgdgdfg电费')]
m = 0
for i in music_list:
m += 1
b = '{0:^3} {1:*^31} {2:*^20}'.format(m, i[1], i[2])
print(b)
输出结果:
引用 皆我百晓生 小程序回复内容作答:
可以使用字符串的ljust()和rjust()方法来对齐输出结果。ljust()方法可以将字符串左对齐,rjust()方法可以将字符串右对齐。
修改代码如下:
a = '{0:^3} {1:*^31} {2:*^20}'.format('序号', '歌曲名', '歌手')
print(a)
music_list = [(1,'就大水电费水电费佛寺丰','sd水电费'), (2,'那大丰','电费'), (1,'就大佛寺那fddfg深粉色gddf大丰','sd水fgdgdf电费')]
m = 0
for i in music_list:
m += 1
b = '{0:^3} {1:*^31} {2:*^20}'.format(m, i[1].ljust(31), i[2].rjust(20))
print(b)
在以上代码中,使用ljust(31)将歌曲名左对齐,并设置宽度为31,使用rjust(20)将歌手右对齐,并设置宽度为20。这样可以保证输出结果对齐。
【以下回答由 GPT 生成】
可以使用str.ljust()和str.rjust()函数来解决字符串输出多行对齐的问题。以下是具体步骤:
下面是修改后的代码示例:
a = '{0:^3} {1:*^31} {2:*^20}'.format('序号', '歌曲名', '歌手')
print(a)
music_list = [(1, '就大水电费水电费佛寺丰', 'sd水电费'),
(2, '那大丰', '电费'),
(1, '就大佛寺那fddfg深粉色gdgdf大丰', 'sd水fgdgdfg电费')]
# 获取各字段的最大长度
max_index_length = max(len(str(i[0])) for i in music_list)
max_title_length = max(len(i[1]) for i in music_list)
max_artist_length = max(len(i[2]) for i in music_list)
m = 0
for i in music_list:
m += 1
# 左对齐序号
index_str = str(i[0]).ljust(max_index_length)
# 右对齐歌曲名
title_str = i[1].rjust(max_title_length)
# 右对齐歌手
artist_str = i[2].rjust(max_artist_length)
b = '{0:^3} {1:*^31} {2:*^20}'.format(index_str, title_str, artist_str)
print(b)
这样就能实现输出结果的歌曲名一列对齐,不再导致歌手一列对不齐的问题。
【相关推荐】