2013-07-06 23 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