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 

我还在努力......

4

1 回答 1

6

如果您的数据是

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

你可以简单地做

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

如果你想制表你的数据

>>> 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}
>>> 

这类似于您的表达试图实现的目标,但是添加tab并破坏了它newlinejoin

但是我觉得在简单性和可读性方面,前一种方法会更好

于 2012-04-09T17:10:52.797 回答