我的排名很长,就像这样:
1. xxx
2. xxx
...
14. xxx
...
456. xxx
如您所见,每行的宽度都不同。我干预了zfill()
,但是我不知道如何根据最宽条目的长度插入正确数量的零。
任何帮助将不胜感激。
编辑:我的排名列表是['player 1', 'player 7', 'player 8']
之类的列表
答案 0 :(得分:0)
您可以通过评估最长条目的长度来评估最长条目的长度。例如,99是2位数字,而len(str(99))
是2,这意味着需要两个字符。
然后,我们可以利用f字符串格式产生以下结果:
for x in range(len(rankings)):
print(f'{x+1:0{len(str(len(rankings)))}}. xxx')
示例:
rankings = [1]*5
for x in range(len(rankings)):
print(f'{x+1:0{len(str(len(rankings)))}}. xxx')
产生以下结果:
1. xxx
2. xxx
3. xxx
4. xxx
5. xxx
>>>
同时
rankings = [1]*50
for x in range(len(rankings)):
print(f'{x+1:0{len(str(len(rankings)))}}. xxx')
产生以下结果:
01. xxx
02. xxx
03. xxx
04. xxx
05. xxx
06. xxx
07. xxx
08. xxx
09. xxx
10. xxx
11. xxx
12. xxx
13. xxx
14. xxx
15. xxx
16. xxx
17. xxx
18. xxx
19. xxx
20. xxx
21. xxx
22. xxx
23. xxx
24. xxx
25. xxx
26. xxx
27. xxx
28. xxx
29. xxx
30. xxx
31. xxx
32. xxx
33. xxx
34. xxx
35. xxx
36. xxx
37. xxx
38. xxx
39. xxx
40. xxx
41. xxx
42. xxx
43. xxx
44. xxx
45. xxx
46. xxx
47. xxx
48. xxx
49. xxx
50. xxx
>>>
答案 1 :(得分:0)
这是将max
与len
一起使用的一种方法
例如:
data = ["1. xxx", "2. xxx", "14. xxx", "456. xxx"]
fill_value = len(max(data, key=lambda x: len(x)))
for i in data:
print(i.zfill(fill_value))
输出:
001. xxx
002. xxx
014. xxx
456. xxx