2012-04-09 61 views
0

任何想法如何打印打印拉链发生器产生

(([0.2, 0.6], [0.5, 0.8]), "10 11 {'chocolate': 10}") 
(([0.0, 0.6], [0.8, 0.5]), "10 12 {'chocolate': 10}") 

为..

0.2 0.6 0.5 0.8 10 11 chocolate 10 
0.0 0.6 0.8 0.5 10 12 chocolate 10 

我也设法强迫它向(忽略巧克力现在):

(([0.2, 0.6], [0.5, 0.8]), '10 11 10') 
(([0.0, 0.6], [0.8, 0.5]), '10 12 10') 

如果这更容易变成

0.2 0.6 0.5 0.8 10 11 10 
0.0 0.6 0.8 0.5 10 12 10 

试了一下我的其他问题在这里找到,但如

 print '\n'.join('\t'.join(map(str,tuple(chain(*i)))) for i in s) 

位,这导致字和最后一个元素看起来像

c  h  o  c  o  l  a  t e 

我还在努力....

+0

这很不清楚你实际需要什么作为输出。是''巧克力''是一个错字还是你真的想要那个'''''? – 2012-04-09 17:07:38

+0

对不起,这个也改正了。 – user1322296 2012-04-09 17:09:07

+0

该字典是否意味着是字符串的一部分? – 2012-04-09 17:09:28

回答

6

如果您的数据是

>>> spam=(([0.2, 0.6], [0.5, 0.8]), "10 11 {'chocolate': 10}") 

Yo ü可以简单地做

>>> print str(spam).translate(None,"([]){},\"'") 
0.2 0.6 0.5 0.8 10 11 chocolate: 10 

如果你想tabify数据

>>> print str(spam).translate(None,"([]){},\"'").replace(' ','\t') 
0.2 0.6 0.5 0.8 10 11 chocolate: 10 
>>> 

如果你是精用大括号“{”和冒号“:”在你的最终输出,你也可以这样做

>>> ''.join(map(str,list(itertools.chain(*list(itertools.chain(*spam)))))) 
"0.20.60.50.810 11 {'chocolate': 10}" 

或目前你在做什么

>>> print ''.join(map(str,list(itertools.chain(*list(itertools.chain(*spam)))))) 
0.20.60.50.810 11 {'chocolate': 10} 
>>> 

这与你的表达试图实现的类似,但加入tabnewlinejoin毁了它。

但我觉得简单易读,前面的方法会更好

+0

甚至更​​好:打印STR(垃圾邮件).translate(无,“\”([])“) – luke14free 2012-04-09 17:12:28

+0

假设数据不能包含这些字符 – 2012-04-09 17:14:02

+0

这会删除“\”([])“,但是也会丢失格式设置,即根据需要删除 – user1322296 2012-04-09 17:18:51