嗨,谢谢你的阅读。我承认,这是我之前提出的一个问题的发展,在我部分解决了这个问题之后。我正在尝试在以前的工作函数中处理一个文本块(file\u object)。文本或文件对象碰巧是Unicode格式的,但我已经成功地转换为ascii文本并逐行拆分。我希望进一步拆分“=”符号上的文本,以便将文本放入词典。例如,Key:Value为“GPS Time”:“14:18:43”,因此从时间中删除尾随的“.000”(尽管这是第二个问题)。你知道吗
这是文件对象格式
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时间设置为字典键
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时间”,但它忽略了纬度、纬度等,更糟的是,有时每个数据包项目之间也有一个空行。我想我需要在“return”之前存储以前与词典相关的拆分,但是我很难找到如何做到这一点。你知道吗
我现在得到的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’},
提前谢谢你的帮助。你知道吗
米克
所有这些
range(len(whatever))
的使用都是无稽之谈。在Python中几乎不需要这样做。只需重复一遍。你知道吗然而,您的问题更为根本:您从while循环内部返回。这意味着您只能得到一个元素,因为只要处理完第一行,就返回,函数就结束了。你知道吗
此外,您还有一个
while
循环,这意味着程序一旦遇到不带等号的行,处理就会结束;但是每个数据行之间都有空行,因此执行永远不会超过第一行。你知道吗所以你只需要:
相关问题 更多 >
编程相关推荐