2014-03-26 74 views
0

我有類似以下內容的條目列表:格式列表輸出

[('sw1', 'sw2'), ('sw1', 'sw3'), ('sw1', 'sw4'), ('sw2', 'sw3'), ('sw2', 'sw4'), ('sw3', 'sw4')] 

我想元組轉換爲字符串,並將其打印在單獨的行像這樣以它們作爲參數傳遞給另一個程序:

(sw1 , sw2)\n 
(sw1 , sw3)\n 
(sw1 , sw4)\n 
(sw2 , sw3)\n 
(sw2 , sw4)\n 
(sw3 , sw4)\n 

我試圖strip()split()但這些似乎並沒有被支持的元組。我假設我需要一些正則表達式來完成我正在嘗試做的事情,但即使如此,我仍然不確定是否需要處理這樣一個事實:,的潛在字段分隔符在元組內部和之間。任何指針都非常感謝。我很老,只是想學習編程。

回答

1

您可以使用字符串格式化如下:

a = [('sw1', 'sw2'), ('sw1', 'sw3'), ('sw1', 'sw4'), ('sw2', 'sw3'), ('sw2', 'sw4'), ('sw3', 'sw4')] 

for i in a: 
    print('({:}, {:})'.format(*i)) 

# (sw1, sw2) 
# (sw1, sw3) 
# (sw1, sw4) 
# (sw2, sw3) 
# (sw2, sw4) 
# (sw3, sw4) 

這不會改變你的元組本身,而是因爲你希望它格式化的打印。代碼只是迭代你的列表並打印給定格式的元組。字符串format的方法覆蓋了here

+0

感謝您的幫助!你建議的方法做我希望的。我對Python和編程一般都很陌生。我閱讀了字符串格式規範,試圖瞭解打印格式示例如何實際工作。從我讀的大括號({})中包含替換字段。我不理解的部分是如何冒號(:)導致從其他字符中刪除引號。謝謝你的澄清。 – user3410622

+0

你的元組中的引號只是聲明它們是字符串,它們實際上並不存在於字符串本身中。如果你想在打印時保留引號,那麼你可以用'「('{:}','{:}')」。format(* i)'來替換你的格式字符串。 ('sw1','sw2')。 – Ffisegydd

+0

不,我不想要報價。我稍微玩了一下。 ('({:},{:})'。format(* i)) print('({},{})'。format(* i)) print('({0},{1})'.format(* i)) – user3410622

2
>>>li = [('sw1', 'sw2'), ('sw1', 'sw3'), ('sw1', 'sw4'), ('sw2', 'sw3'), ('sw2', 'sw4'), ('sw3', 'sw4')] 

>>> print "\n".join([str(item) for item in li]) 
('sw1', 'sw2') 
('sw1', 'sw3') 
('sw1', 'sw4') 
('sw2', 'sw3') 
('sw2', 'sw4') 
('sw3', 'sw4') 

另一種方式

>>> print "\n".join(["%s" %(item,) for item in li]) 
('sw1', 'sw2') 
('sw1', 'sw3') 
('sw1', 'sw4') 
('sw2', 'sw3') 
('sw2', 'sw4') 
('sw3', 'sw4') 
+0

你不需要先創建一個列表解析來傳遞連接,只需要使用一個生成器表達式(即去掉括號) – acushner

+1

請參閱[這裏](http://stackoverflow.com/questions/9060653/list-comprehension-without-python/9061024#9061024)討論字符串'join'方法。事實證明,列表解析通常比生成器表達更快。 – Ffisegydd

0

你可以只明確的元組轉換爲字符串(這個工程完全按照你所希望的) - 最後用分隔符爲的是在元組之間將它們連接在一起的所需的輸出:

>>> lst_tups = [('sw1', 'sw2'), ('sw1', 'sw3'), ('sw1', 'sw4'), ('sw2', 'sw3'), ('sw2', 'sw4'), ('sw3', 'sw4')] 
>>> my_string = '\n '.join([str(t) for t in lst_tups]) 
>>> my_string 
"('sw1', 'sw2')\n ('sw1', 'sw3')\n ('sw1', 'sw4')\n ('sw2', 'sw3')\n ('sw2', 'sw4')\n ('sw3', 'sw4')" 

然後您可以很容易地輸出它如下;只是通過打印出來:

>>> print(my_string) 
('sw1', 'sw2') 
('sw1', 'sw3') 
('sw1', 'sw4') 
('sw2', 'sw3') 
('sw2', 'sw4') 
('sw3', 'sw4')