def onNewData(self, data):
zvalues = []
f = open("rawdata.txt","w+")
for i in range(data.getNumPoints()):
zvalues.append(data.getZ(i))
f.write((str(data.getX(i))+',')+(str(data.getY(i))+',') + (str(data.getZ(i))+',')+(str(data.getNoise(i))+',')+(str(data.getGrayValue(i))+',') + (str(data.getDepthConfidence(i))+','))
if (i+1)%224==0:
f.write('\n')
f.close()
对于这组代码,文本文档输出显示所有乱码而没有任何格式。如何使数字分别以列格式归入每个类别?例如,我有一个标头x,y,z,grayvalue,Noise,DepthConfidence,这些数字将相应地落入每个类别下。
答案 0 :(得分:0)
这是一种简单的算法,可将数据打印到左对齐的列中。首先,将其字符串表示形式的所有数据放入一个数组中。数组的每一行将是打印数据的一行,每一列将是打印的列。然后,对于每一列,查找并存储该列中数据项的最大长度。然后循环遍历数组的行。对于该行中的每一行和每一列,打印或写入数据项并添加足够的空间,以使该数据项占用与该列中最大数据项相同的空间。请记住在每行末尾打印/写一个行尾。
您仍然需要做出一些决定,例如是将分隔符逗号放在填充空格之前还是之后。但是这里有一些可能的代码。
# Get the data in string format into an array
toprint = []
for i in range(data.getNumPoints()):
toprint.append([str(data.getX(i)),
str(data.getY(i)),
str(data.getZ(i)),
str(data.getNoise(i)),
str(data.getGrayValue(i)),
str(data.getDepthConfidence(i)),
])
# Get the maximum size data for each column
numrows = len(toprint)
numcols = len(toprint[0])
maxwidths = [max(len(toprint[rownum][colnum])
for rownum in range(numrows))
for colnum in range(numcols)]
# Print the data left-justified
for row in toprint:
printrow = ', '.join(s.ljust(maxwidths[colnum]) for s in row)
print(printrow, file=f)
您没有提供足够的文本格式数据供我测试该代码。