例如,我有一些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
答案 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()