正则表达式出错并转换为float?

时间:2014-07-18 18:38:15

标签: regex python-3.x

我正在尝试获取文件中的字符串

id = re.compile('[1-90]\s[0-59].[0-99].+')
if id.search(pal):
    print ('si')
    a = id.search(pal)
else:
    print('NO')

>>>a.group()
'7 3.99 N,  1 13.02 W'

但原始字符串是:37 3.99 N,1 13.02 W

然后我输掉了第一个'3'

如何修改模式以获取完整的字符串

另一个问题 我可以使用字符串作为数字,即,这是一个以度和分钟为单位的位置,我想将...转换为degrees.minutes gg.mmm

2 个答案:

答案 0 :(得分:1)

  

然后我丢失了第一个str'3'如何修改模式以获得完整的字符串

您忘记在第一组+

中添加[1-90]
[1-90]+\s[0-59].[0-99].+

DEMO

[1-90][0-99]表示数字1到9


如果您要检查某个范围内的数字,请尝试这种方式。

检查范围从1到90

^([1-9]|[1-8][0-9]|90)$

DEMO

答案 1 :(得分:1)

您需要一次捕获这一个字符。例如,以下正则表达式将捕获字符串的前半部分(假设前导数字中不允许超过两位数。)

`[1-9]?[0-9]\s[0-9]\.[0-9]{2}\s[NS],`

此正则表达式与您的逗号匹配(包括)。 ?表示前导数字是可选的。使用\转义句点使其与文字句点匹配,而不是任何一个字符。 {2}意味着恰好匹配前面的两个实例。但是你真的应该结帐regexpalthis site以获得更多的正则表达式帮助。