我有一个动作捕捉文件,其中包含以下信息:
我需要这个文件看起来像这样:
不同之处在于我不需要任何顶部部件,只需从第31行b开始。在线31,有像LFHD这样的关键字,下面是xyz位置。我的代码通过读取csv并获取每行的字典来使用修改后的版本:
filename = args
jointCSVs=[]
if filename != None:
print "Trying to get file"
joint_file = open(str(filename),"rb")
reader = csv.DictReader(joint_file)
print "Got File"
for data in reader:
jointCSVs.append(data)
return jointCSVs
我无法找到有关如何使用python和csv执行更复杂操作的任何有用的信息,特别是因为使用我的代码,只有第一个块被读入并且它在有空格时结束。我甚至尝试了这个我找到的代码,但它不会打开第一个csv文件,它只是崩溃: pyqt - populating QTableWidget with csv data
手动修改需要很长时间,而且我有很多这些文件。后来我计划制作更多的gui东西,可以编辑文件并修改它们或选择对很多处理mocap数据的人有用的部分。我找不到任何用于复杂数据操作的库或用于指定要从文件中删除的行和列的简单方法。这是否存在或有人可以解释如何做到这一点?
谢谢!
答案 0 :(得分:1)
在处理您拥有的数据源时,我经常使用Numpy。有一些强大的函数可以将文件数据读入Numpy数组。一旦进入numpy数组,行和列就很容易操作。例如,您可以切掉前30行,操纵标题并使用python脚本再次写回文件。作为一个简单的例子:
import numpy as np
data = np.loadtxt("input.csv", skiprows=32)
# play with data, remove 1st column and write back to disk...
data = data[:, 1:]
np.savetxt("output.csv", data, header='LFHDX,LFHDT')
制定新标题并将其传递给savetxt。