在关键字python regex之后提取信息

时间:2016-07-19 20:06:12

标签: python regex

我正在阅读一个文件,其中的数据行如下所示:

ifgfilename: 150304SN.0045; Channel: 1; Name of location: Boulder; Latitude of location: 40.038; Longitude of location: -105.243;

我需要提取信息,所以我写了一个像这样的正则表达式代码:

import re

with open('/Users/CALPY output/info.txt', 'rt') as infofile:
    for count, line in enumerate(infofile): 
        with open('\\_spec_final.t15', 'w') as t:
            lat = re.search('^Latitude of location: (.*)', line)
            lon = re.search('^Longitude of location: (.*)', line)
            date = re.search('^Time of measurement (UTC): (.*)', line) 

            print lat
            print lon
            print date

但是,它不会检索我想要的信息,因为它只是打印出来:

None
None
None

知道如何检索我需要的数字吗? (有时候我需要字符串,所以我需要一些灵活的东西)

1 个答案:

答案 0 :(得分:1)

在每个正则表达式的开头,似乎你不必要地包括^,这意味着行开始。同时将.*更改为一组所有字符,但分号([^;]+)与您想要的值相匹配。在我的测试中,我的外壳有问题,出于同样的原因,你可能会得到None,所以我也添加了它。

lat = re.search('Latitude of location:\s*([^;]+)', line, re.IGNORECASE)
lon = re.search('Longitude of location:\s*([^;]+)', line, re.IGNORECASE)
date = re.search('Time of measurement (UTC):\s*([^;]+)', line, re.IGNORECASE)

print lat.group(1)
print lon.group(1)
print date.group(1)

Python也支持外观,因此避免不必要分组的替代方案是:

(?<=Latitude of location: )[^;]+