2013-12-09 132 views
0

我想从每个元素之间宽度不同的元组输出一个字符串。Python字符串填充

这里是我使用的那一刻代码:

b = tuple3[3] + ', ' + tuple3[4] + '   ' + tuple3[0] + ' ' 
+ tuple3[2] + '   ' + '£' + tuple3[1] 

print(b) 

说,例如我输入文本的这些行:

12345 1312 Teso Billy Jones 
12344 30000 Test John M Smith 

输出将是这样的:

Smith, John M   12344 Test   £30000 
Jones, Billy   12345 Teso   £1312 

如何保持填充与3个部分之间的较大间距一致?

此外,当我直接输入这些字符串从一个文本文件,这是输出我收到:

Smith 
, John M   12344 Test   £30000 
Jones, Billy   12345 Teso   £1312 

我怎样才能解决这个问题?

非常感谢。

+0

哪里是 “史密斯” 在你输入?我看到的只是“Senfkewjnrmith” – mgilson

+1

如何使用选项卡? '\ t' –

+0

感谢排序的间距,但由于某种原因'史密斯'仍然不是'',约翰M 12344测试£30000'' – user2975192

回答

4

字符串格式化以拯救!

lines_of_text = [ 
    (12345, 1312, 'Teso', 'Billy', 'Jones'), 
    (12344, 30000, 'Test', 'John M', 'Smith') 
] 

for mytuple in lines_of_text: 
    name = '{}, {}'.format(mytuple[4], mytuple[3]) 
    value = '£' + str(mytuple[1]) 
    print('{name:<20} {id:>8} {test:<12} {value:>8}'.format(
     name=name, id=mytuple[0], test=mytuple[2], value=value) 
    ) 

结果

Jones, Billy   12345 Teso   £1312 
Smith, John M   12344 Test   £30000 
+0

谢谢。我已经缩小了随机启动的新行的问题,这是因为我从文件中输入了字符串,该文件使用'tuple(a.split(''))''a'作为从文本文件输入的行。然而,用这种方法,元组出现在这种格式中:'('12344','30000','Test','Smith \ n','John M')'。我怎样才能解决这个问题? – user2975192