我收到大量数据,数百到数千行。格式相同,大约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
答案 0 :(得分:1)
首先,要更好地理解问题:如何与数据流同步? 我得到的是你一个接一个地得到这个值,你必须把它们放在一个实现的结构中。 如果您有连续流或文本文件,则需要以不同方式执行此操作。 无论如何,假设你得到一个流,你知道第一个值是X,第二个Y等等你可以:
1)创建一个包含所有必填字段的字典或类。
2)取你收到的字段并检查类型(如果你期望一个int,你可以检查你收到的字符串中是否有“int”)
3)进行转换并管理可能的exeptions(如果你找到“int”但是你发现“gatto”有错误
4)输入您提取的值(如果该行为“Value(int):10”,您可以在数据结构中的正确位置执行int(line.split(":")[1]))
等等。
如果你收到一个序列,你也应该检查类型一致性“如果在第三个位置我等一个字符串如果我得到一个int会发生什么?”
是否清楚或者您需要更多解释/示例?