繁体   English   中英

如何使用python正则表达式从文件中获取文本

[英]How do I grab text from a file using python regex

我有一个很大的文本文件,其中包含一个很长的GPS信息块,并且我编写了一个python脚本来获取坐标并将其插入到xml文件中,我只需要函数即可遍历该文件并提取坐标。

该文件由以下文本组成

{u'bearing': 0, u'altitude': 0, u'time': 1423728072412L, u'longitude': -118.38120859999991, u'provider': u'network', u'latitude': 34.052508400000001, u'speed': 0, u'accuracy': 20}{u'bearing': 0, u'altitude': 0, u'time': 1423728072412L, u'longitude': -118.38120859999992, u'provider': u'network', u'latitude': 34.052508400000001, u'speed': 0, u'accuracy': 20}

我想使用某种正则表达式,允许我查找和获取u'longitude':之后的值的每个实例以及u'latitude'之后的值: 该文档包含大约1000次重复行,每次都有不同的值。

在此先感谢您的帮助或朝着正确方向前进。

您可以将ast.literal_eval()应用于文件中的每一行,并从生成的字典中获取longitude值:

from ast import literal_eval

with open('input.txt') as f:
    for line in f:
        d = literal_eval(line)
        print d['longitude']

作为附带说明,请考虑将数据以JSON格式序列化,而不是将字典转储到文本文件中。 json模块将对此有所帮助。

(?<=longitude':)\s*([^,}]*)|(?<=latitude':)\s*([^,}]*)

试试看。看演示。

https://regex101.com/r/jG2wO4/3

import re
p = re.compile(r'(?<=longitude\':)\s*([^,}]*)|(?<=latitude\':)\s*([^,}]*)')
test_str = "{u'bearing': 0, u'altitude': 0, u'time': 1423728072412L, u'longitude': -118.38120859999991, u'provider': u'network', u'latitude': 34.052508400000001, u'speed': 0, u'accuracy': 20}{u'bearing': 0, u'altitude': 0, u'time': 1423728072412L, u'longitude': -118.38120859999992, u'provider': u'network', u'latitude': 34.052508400000001, u'speed': 0, u'accuracy': 20}"

re.findall(p, test_str)

如果文件不大,您可以一次性阅读并应用此正则表达式,否则可以逐行阅读并应用此正则表达式,并将结果附加在列表或字典中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM