重复数据,如何解析以方便访问?

时间:2013-04-15 10:58:19

标签: python dictionary struct

我收到大量数据,数百到数千行。格式相同,大约50行数据,然后重复相同类型的数据。我知道数据代表什么,但收到的数据不包含这个。

所以收到的数据如下:

     Value(int):       703                                                    
     Value(int):       12                                                     
     Value(int):       58                                                     
     Value(int):       0                                                      
     Value(int):       -1                                                     
     Value(int):       88                                                     
  Value(string):       272                                                    
  Value(string):       01                                                     
     Value(int):       61                                                     
     Value(int):       0                                                      
     Value(int):       0    

但我知道每件事的意思,例如:

fcn:Integer
Range: 0 to 16383
Code:Integer
Range: 0 to 511
CountryCode:String
^\d{3}$
NetworkCode:String

所以这些重复一遍,解析这些数据的简单方法是什么,以便我可以看看每个重复序列的第一个元素等等来比较它们?我可以制作一个结构吗?我需要字典,或者我该怎么做?我不确定是否允许这样的问题,基本上想知道你会怎么做以及为什么。

这是一轮重复数据,我已经记住了每个值的每个名称。所以,在我收到Value(int): 1的地方,我知道它是Band Name

Band Name: 
     Value(int):     1
Cell Scan Time
  Value(string):     2013-04-03T08:21:10Z
       Sequence: 
       Sequence: 
ARFCN/UARFCN --->2112.8 MHz DL / 1922.8 MHz UL
     Value(int):       10564
RSSI
     Value(int):       39
BSIC/SCODE
     Value(int):       263
RXQUAL
     Value(int):       0
FREQ OFFSET
     Value(int):       9
FREQ QUAL
     Value(int):       90
MCC
  Value(string):       272
MNC
  Value(string):       05
LAC
     Value(int):       67
RAC
     Value(int):       67
RNC Identity
     Value(int):       708
Cell ID
     Value(int):       130
CPICH TX POWER
     Value(int):       31
Patch Loss
     Value(int):       102
CPICH EC over N0
     Value(int):       -5
CPICH RSCP
     Value(int):       -76
RXLEV + CPICH EC
     Value(int):       0
TX Diversity

QQUAL MIN
     Value(int):       -20
QRXLEV MIN
     Value(int):       -111
HCS Priority
     Value(int):       -1
DeltaQHcsRscp
     Value(int):       -1
Scan Temperature 
     Value(int):       0

以下内容仅在收到的每组数据中重复一次,其余数据始终以相同的格式重复:

Band Name: 
     Value(int):     1
Cell Scan Time
  Value(string):     2013-04-03T08:21:10Z
       Sequence: 
       Sequence: 

完整输出样本:http://pastebin.com/ArGfm2cD

编辑:

我的数据目前存储在变量中:

proc = subprocess.Popen(cmd_rancli, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
proc_stdout  = proc.communicate(ran_opt_get_access_data)[0]
print proc_stdout

1 个答案:

答案 0 :(得分:1)

首先,要更好地理解问题:如何与数据流同步? 我得到的是你一个接一个地得到这个值,你必须把它们放在一个实现的结构中。 如果您有连续流或文本文件,则需要以不同方式执行此操作。 无论如何,假设你得到一个流,你知道第一个值是X,第二个Y等等你可以:

1)创建一个包含所有必填字段的字典或类。

2)取你收到的字段并检查类型(如果你期望一个int,你可以检查你收到的字符串中是否有“int”)

3)进行转换并管理可能的exeptions(如果你找到“int”但是你发现“gatto”有错误

4)输入您提取的值(如果该行为“Value(int):10”,您可以在数据结构中的正确位置执行int(line.split(":")[1])) 等等。

如果你收到一个序列,你也应该检查类型一致性“如果在第三个位置我等一个字符串如果我得到一个int会发生什么?”

是否清楚或者您需要更多解释/示例?