2014-03-26 48 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')