检查GPS字符串格式

时间:2018-11-19 17:00:37

标签: python string

例如,我有一些GPS坐标数据。

38 41'13.2"N
96 30'23.4"E 

如何检查其格式是否恒定?有时数据如下:

38 41.2342
96 30.1211

我尝试使用re,但是字符串内的点划线使它难以通过。

理想的格式是XX XX'XX.X”(E或N)

我尝试过

import re
r = re.compile(".* .*'.*..*"N")
if r.match('48 46'55.3"N') is not None:
   print 'matches'

取自here

2 个答案:

答案 0 :(得分:1)

您没有在示例中使用引号。注意第2行的\"和第3行的\'。这很重要,这样python才知道引号是字符串的一部分,而不是终止。

我也使用了更明确的模式。

import re
r = re.compile("^\d{2} \d{2}'\d{2}.\d{1}\"[EN]$")
if r.match('48 46\'55.3"N') is not None:
    print 'matches'

答案 1 :(得分:0)

您的标点符号问题是:(1)当您想匹配实际的小数点时,需要用反斜杠转义.,否则它会匹配任何字符; (2)您需要转义双引号或以其他方式防止双引号终止您的字符串。

将其写为可读的可调试正则表达式的最佳方法是使用Python“原始”字符串r"like this",该字符串允许反斜杠而不进行转义,并且将其三引号括起来,使您可以同时使用{{ 1}}和'里面没有转义。而且由于三引号字符串允许多行表达式,所以您甚至可以在"模式下进行编译,从而允许空格和注释。如果在正则表达式中使用VERBOSE named-group语法,则后续的匹配/提取代码的可调试性也得到了改善-然后,可以在match对象的(?P<...>)输出中使用有意义的名称访问组。总而言之,这给了我们:

groupdict()