2

如果我有以下由标签分隔打印的数据,使用

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')))

为每个字符返回一个换行符。

4

2 回答 2

4

您可以使用文档grouper中的配方:itertools

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))
于 2012-04-09T18:52:05.263 回答
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]])
于 2012-04-09T19:18:02.107 回答