【发布时间】:2015-03-03 10:57:38
【问题描述】:
您好,感谢您的阅读。在我部分解决了这个问题之后,我承认这是我之前提出的一个问题的进展。我正在尝试在早期的工作函数中处理一段文本(file_object)。 text 或 file_object 恰好是 Unicode,但我设法转换为 ascii 文本并逐行拆分。我希望然后进一步拆分“=”符号上的文本,以便我可以将文本放入字典中。例如 Key: Value as ‘GPS Time’:’ 14:18:43’ 因此从时间中删除尾随的“.000”(尽管这是第二个问题)。
这是 file_object 格式……
2015 Jan 01 20:07:16.047 GPS Info #Log packet ID
GPS Time = 14:18:43.000
Longitude = 000.65341
Latitude = +41.25385
Altitude = +111.400
这是我的部分工作功能……
def process_data(file_object):
file_object = file_object.encode('ascii','ignore')
split = file_object.split('\n')
for i in range(len(split)):
while '=' in split[i]:
processed_data = (split[i].split('=', 1) for _ in xrange(len(split)))
return {k.strip(): v.strip() for k, v in processed_data}
这是提示上述函数的主脚本的初始部分,然后将 GPS Time 设置为 Dictionary 键……
while (mypkt.Next()): #mypkt.Next is an API function in the log processor app I am using – essentially it grabs the whole GPS Info packet shown above
data = process_data(mypkt.Text, 1)
packets[data['GPS Time']] = data
上面的代码分割第一个实例“GPS时间”没有问题,但它忽略了经度、纬度等,更糟糕的是,有时每个数据包项之间也有一个空行。我想我需要在“返回”之前存储以前与字典相关的拆分,但我很难找出如何做到这一点。
我目前得到的 dict 输出是……
'14:19:09.000': {'GPS Time': '14:19:09.000'},
但我希望的是……
'14:19:09': {'GPS Time': '14:19:09',
‘Longitude’:’000.65341’,
‘Latitude’:’+41.25385’,
‘Altitude’:’+111.400’},
提前感谢您的帮助。
米克
【问题讨论】:
-
每个文件是否有一条记录,即一条 GPS 信息记录,由 GPS 时间、经度、纬度和纬度 4 项组成,或者每个文件可以有多条?每个项目之间真的有空行吗?
-
嗨,mhawke,GPS 数据包的实例不止一个,但是我尝试了下面 Daniel 的示例并设法让它工作。
标签: python dictionary unicode split