2013-06-12 20 views
0

我有了一些資料,看起來像一個運動捕獲文件: enter image description hereCSV讀取和解析動作捕捉數據

我需要的文件,看起來像這樣: enter image description here

不同的是,我不需要任何的頂部部分,只需從第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

它需要很長的時間手工修改,我有很多這些文件。後來我打算製作一些可以編輯文件並修改它們或者選擇對許多處理mocap數據的人有用的部分的gui文件。我找不到任何用於複雜數據操作的庫或指定從文件中刪除行和列的簡單方法。這是否存在或有人可以解釋如何做到這一點?

謝謝!

回答

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。

+0

看起來不錯,但我試圖用numpy加載文件時遇到一些錯誤。一種是在加載mocap數據時轉換字符串以便浮動的錯誤。 – user1938107

+0

具體的錯誤是什麼?你可能需要玩dtype,或者定義轉換器來處理邊緣情況。你有沒有找到[genfromtxt](http://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html#numpy.genfromtxt),這在閱讀複雜數據文件時更強大? – dwxw