2013-07-06 24 views
0

我正在嘗試使用Python讀取「.cnt」文件。我的理解是它編碼來自EEG的信息。我應該如何解碼此字符串

file = open("PICS2s8.cnt","rb") #I get the same results with 'r' instead of 'rb' 
data = file.readlines() 

當我檢查文件的第一行,我明白了:

'Version 3.0\x00\xe3\x00J\x04\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00UU\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0013/10/05\x00\x0011:28:07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00--------\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80?\x00\x00\x00\x00\x00\x00\x00\x00--------\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x02\x00\x00\x00\x00\x00\x10\'\x01\x00\x00\x00\x00\x00\x8b\x02 \x00\x01\x00\x00\x00\xf4\x01\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00 A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x003\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00zD\x00\x00\x00\x00\x00\xcd\xcc\xcc\xbd\x00\x00\x00\x00\x00\xcd\xcc\xcc\xbd\x9a\x99\x99?\x00\x00H\xc2\x00\x00HB\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xc2\x00\x00\xf0B\xcd\xcc\xcc\xbd#\xdb\x99?\xcd\xcc\xcc\xbd#\xdb\x99?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xcc\xcc\xbd\x9a\x99\x99?\x00--------\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00--------\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00--------\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\[email protected]\xc8\x00d\x00\x9c\xff\xf4\[email protected]\x8f\xc2\xf5<\x00\x00--------\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00--------\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa?\x10\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2p}B\xb5\x1e\x8eA\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\xfc\xff?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\xe4\xc8I\x04\x00\x00\x00\x00\x01\x00\x00\x00\x00PO2\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00)\\\xa7C\xd3\xcd3C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x89A\x03\x00\x00\x00\x00\x1d\x00\x00\x15t\x84?O1\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00ff6C/\xbd4C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x89A\x03\x00\x00\x00\x00\x0e\x01\x00\x16\xf0\x83?M2\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00\x90\xc2\[email protected]\x83\xe0/C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x89A\x03\x00\x00\x00\x00\x06\x02\x00K9\x84?PZ\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00\xebQ\x80C\x1b\x8f\x1aC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x89A\x03\x00\x00\x00\x00\x06\x03\x00\x15t\x84?P4\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00)\\\xa7C\xfa\xbe\x1aC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x89A\x03\x00\x00\x00\x00\x05\x04\x00\xdc\xbd\x84?CP4\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00R\xb8\xa6CZd\xfdB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x89A\x03\x00\x00\x00\x00\x07\x05\x00H\xea\x84?P8\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00\x90\xc2\xcdC\xfa\xbe\x1aC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x89A\x03\x00\x00\x00\x00\x0b\x06\x00\x15t\x84?C4\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00\x90\xc2\xa5CJ\x0c\xc3B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x89A\x03\x00\x00\x00\x00\x05\x07\x00Q\xc4\x83?TP8\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00\xa4p\xcdCZd\xfdB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x89A\x03\x00\x00\x00\x00\x06\x08\x00\xf8G\x84?T8\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00\xb8\x1e\xcdCJ\x0c\xc3B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x89A\x03\x00\x00\x00\x00\x05\t\x00\x1em\x83?P7\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x01\x01\x00\x01\x00\x00\x00q=\xcaB\xfa\xbe\x1aC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x89A\x03\x00\x00\x00\x00"\n' 

我怕我真的不知道如何開始製作我在一個標準的方式讀取文件這種感覺。我混淆了ascii字符串值和字節值的混淆。我已經試過:

data[0].decode('utf-8') 

data[0].decode('utf-16') 

但兩者引發的錯誤。

我也試過

from struct import unpack, calcsize 
file.seek(0) 
chunk = file.read(calcsize('25c')) 
read_chunk = unpack('25c',chunk) 

,並得到結果:

('V', 'e', 'r', 's', 'i', 'o', 'n', ' ', '3', '.', '0', '\x00', '\xe3', '\x00', 'J', '\x04', '\x00', '\x00', '\x00', '\x00', '\x02', '\x00', '\x00', '\x00', '\x00') 

有什麼明顯的,我在這裏失蹤?

+1

二進制格式不限於非文本信息。 3.0版本的部分只是二進制文件中的文本信息。 –

+0

'data [0]'只是*一個字節*而UTF-16預計會找到多個字節,所以會引發異常。它不是UTF數據。 –

+0

如果它是一個連續EEG文件,你有沒有檢查http://paulbourke.net/dataformats/eeg/? –

回答

0

它是一種嵌入式ASCII字符串的二進制格式。這是一種專有格式,你必須使用struct和許多代碼來自己分析C數據結構。

也許你最好轉換格式或使用第三方Python庫;與this script轉換文件到.h5格式(用MATLAB可用)(Python代碼,使用numpy):

$ python cnt2h5 PICS2s8.cnt 

會產生PICS2s8.h5文件。

+0

我實際上是從那開始的。由於我無法訪問Matlab,因此我需要一個非Matlab相關輸出。我開始通過修改cnt2h5來進行測試,以便它可以執行'load_setup',但是獲得了一個帶有鍵值對的信息字典,如'time':'\ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 --------'我懷疑我需要與生成此文件的人聊聊,以確保我知道進入它的內容 – user1245262

0

嗨它可能爲時已晚來回答這個問題,但這裏是我約的\ x00的字符額外填充的發現:

當編碼某些塊加密方法的任何字符串,它增加了零填充到字符串使其變得可鄙/加密技術的塊大小的多倍。例如,如果您的加密機制是16字節,並且您的字符串是12字節,那麼加密機制將向字符串添加4字節空填充,然後對其進行加密。所以當你解密它的時候,你會在字符串的末尾獲得額外的空填充。

這裏是一個基於PHP的AES加密一些更多的解釋:http://www.chilkatsoft.com/p/php_aes.asp