当前位置: 代码迷 >> python >> 代码不打印.format编码
  详细解决方案

代码不打印.format编码

热度:95   发布时间:2023-06-13 13:59:13.0
myfile = open('Results.txt')
title = '{0:20} {1:20} {2:20} {3:20} {4:20}'.format('Player Nickname','Matches Played','Matches Won','Matches Lost','Points')
print(title)
for line in myfile:
    item = line.split(',')
    points = int(item[2]) * 3
    if points != 0:
        result = '{0:20} {1:20} {2:20} {3:20} {4:20}'.format(item[0], item[1], item[2], item[3],points)
        print(result)

嗨那里只需要帮助那些知道如何正确使用.format的人,出于某些原因打印答案时。 我希望这个。

Player Nickname      Matches Played       Matches Won          Matches Lost         Points 
Leeroy               19                   7                    12                   21

但我得到的显示输出是这个

  Player Nickname      Matches Played       Matches Won          Matches Lost         Points              
  Leeroy               19                   7                    12
                                   21

21正在错误的地方显示。 我做错了什么?

默认情况下,整数与右对齐,字符串向左对齐:

>>> '{:20}'.format(100)
'                 100'
>>> '{:20}'.format('100')
'100                 '

您可以在将其传递给format之前显式指定左对齐或将int转换为字符串:

result = '{0:20} {1:20} {2:20} {3:20} {4:<20}'.format(item[0], item[1], item[2], item[3], points)
result = '{0:20} {1:20} {2:20} {3:20} {4:20}'.format(item[0], item[1], item[2], item[3], str(points))

另一种方法是使用strip()删除空格,

result = '{0:20} {1:20} {2:20} {3:20} {4:20}'.format(item[0], item[1], item[2], item[3],str(points).strip())

如果有新行,你可以省略它,

str(points).replace('\n','')
  相关解决方案