[英]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']
(?<=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.