2013-04-06 61 views
1

可以說變量「信息」有以下字符串:如何使用Python格式化字符串與分隔成列

abc: 234234 
aadfa: 235345 
bcsd: 992 

在Python中,什麼是格式化「信息」,以最簡單的方式:

abc: 234234 
aadfa: 235345 
bcsd: 992 
+3

你能告訴我們你有什麼到目前爲止已經試過?我很肯定你需要遍歷標籤,找到最大長度,再次在標籤上循環,用足夠的空間填充它們。 – tacaswell 2013-04-06 01:33:18

回答

2

這將工作:

>>> s = """abc: 234234 
... aadfa: 235345 
... bcsd: 992""" 
>>> print s 
abc: 234234 
aadfa: 235345 
bcsd: 992 

現在我們可以在新線和空間分割每行獲得每個項目:

>>> pairs = [x.split() for x in s.split('\n') ] 
>>> pairs 
[['abc:', ' 234234'], ['aadfa:', ' 235345'], ['bcsd:', ' 992']] 

現在格式化每個字符串:

>>> for pair in pairs: 
...  print '{0:10} {1}'.format(pair[0], pair[1]) 
... 
abc:  234234 
aadfa:  235345 
bcsd:  992 

注意我們是如何在字符串格式化使用{0:10}?這僅僅意味着用10個字符來格式化該參數。

0

希望以下代碼有所幫助。

>>> import math 
>>> info = ["abc: 234234", "aadfa: 235345", "bcsd: 992"] 
>>> info = [item.split() for item in info] 
>>> maxlen = max([len(item[0]) for item in info]) 
>>> maxlen = math.ceil(maxlen/8.0)*8 
>>> info = [item[0]+" "*(maxlen-len(item[0]))+item[1] for item in info] 

您可以控制最終長度的製作方式。

1

偷@ JoshSmeaton的變量名:

>>> pairs = map(str.split, text.splitlines()) 
>>> max_len = max(len(pair[0]) for pair in pairs) 
>>> info = '\n'.join('{key:<{indent}}{val}'.format(key=k, 
                indent=max_len + 2, 
                val=v) for k, v in pairs) 
>>> print info 
abc: 234234 
aadfa: 235345 
bcsd: 992