每4个标签写一个新的行文本文件python

时间:2012-04-09 18:46:36

标签: python

如果我有使用

分隔打印的以下数据
print str(z).translate(None,"([]){},\"'").replace(' ','\t')

0.016611783537845426    0.5728972505882961  0.1723653381777387   0.44730982873820446    10  11  10  0.016611783537845426     0.5728972505882961 0.2526385373738682  0.03281263933004819 10  12  10  0.016611783537845426    0.5728972505882961  0.509414248773428

如何写入新的txt文件,但每说4个标签就开始换行。所以得到4列。

已经尝试了很多\ n但是我的rubbsih。

例如:

 open("file.txt", "w").write('\n'.join(str(z).translate(None,"([]){},\"'").replace(' ','\t')))

为每个角色返回一个换行符。

2 个答案:

答案 0 :(得分:4)

您可以使用itertools documentation中的grouper食谱:

import itertools as it
def grouper(n, iterable, fillvalue=None):
    "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return it.izip_longest(fillvalue=fillvalue, *args)

然后您可以将输出生成为:

values = str(z).translate(None,"([]){},\"'").split()
output = '\n'.join('\t'.join(x for x in g if x) for g in grouper(4, values))

或者如果您想将其写入文件,请使用f.writelines

f.writelines('\t'.join(x for x in g if x) + '\n' for g in grouper(4, values))

答案 1 :(得分:0)

这应该有效:

text = str(z).translate(None,"([]){},\"'").replace(' ','\t')

# convert to list
x = text.split()
# group by four items
x = [x[0::4],x[1::4],x[2::4],x[3::4]]
# convert back to text lines
print "\n".join(" ".join(i) for i in [x[0::4],x[1::4],x[2::4],x[3::4]])