0

我收到大量数据,数百到数千行。格式一样,大概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
4

1 回答 1

1

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

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

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

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

4)将您提取的值(如果该行是“Value(int):10”,您可以int(line.split(":")[1]))在数据结构中的正确位置进行操作,依此类推。

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

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

于 2013-04-15T11:43:26.417 回答