2013-12-09 134 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