我有来自CSV文件的数据,告诉篮球运动员是否肥胖。
我需要根据这些数据制作完美对齐的表格;我有所有信息来判断一名球员是否肥胖。但是,我有一个“if”语句打印出每个肥胖玩家的值,我需要在整齐排列的行中打印出来。
我有:
obese_count = 0
total_count = 0
print (" " * 5, "First Name", " " * 2, "Last Name", " " * 2, "Height"," " * 2,"Weight"," " * 2, "BMI") # header
print ("- " * 20)
for player in players:
if has_data(player):
if is_obese(player):
print (" " * 5, player["firstname"]," " * 5, player["lastname"]," " * 9, player["h_feet"]," " * 9,player["h_inches"]," " * 5, player["weight"])
obese_count += 1
total_count += 1
返回一张非常草率的表格:
First Name Last Name Height Weight BMI
- - - - - - - - - - - - - - - - - - - -
Carlos Boozer 6 9 280
Elton Brand 6 8 275
Glen Davis 6 9 289
Thomas Hamilton 7 2 330
James Lang 6 10 305
Jason Maxiell 6 7 280
Oliver Miller 6 9 280
Craig Smith 6 7 272
Robert Traylor 6 8 284
Jahidi White 6 9 290
我想知道是否有任何方法可以整理它,这样我就可以拥有一张整齐且对齐的桌子,或者至少对齐不同的行。
答案 0 :(得分:2)
String formatting是你的朋友。
例如,
print '{:<10} {:<10} {:>2}\' {:>2}" {:>6}'.format(player["firstname"], player["lastname"], player["h_feet"], player["h_inches"], player["weight"])
这应该返回这样的内容:
Carlos Boozer 6' 9" 280
Elton Brand 6' 8" 275
Glen Davis 6' 9" 289
顺便说一下:看起来你的桌子上有一个BMI标题,但是你的播放器词典里没有相应的字段。
答案 1 :(得分:0)
Python documentation解释得非常好。
>>> for x in range(1,11):
... print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)
...
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000