Ошибка в регулярном выражении и преобразование в float?

Вопрос:

Я пытаюсь получить строку внутри файла

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’

Как изменить шаблон, чтобы получить полную строку

Другой вопрос Я могу использовать строку в виде цифры, т.е. Это позиция в градусах и минутах, и я хотел бы преобразовать…. в градусы.minutes gg.mmm

Лучший ответ:

Вам нужно захватить одного персонажа за раз. Например, следующее регулярное выражение будет захватывать первую половину строки (при условии, что в ведущих числах допускается не более двух цифр).

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

Это регулярное выражение соответствует (и включает) вашу запятую. ? указывает, что ведущая цифра является необязательной. Экранирование периода с помощью a \ делает его совпадающим буквальным периодом, а не с каким-либо одним символом. {2} означает, что он должен точно соответствовать двум экземплярам того, что ему предшествовало. Но вы действительно должны проверить regexpal и этот сайт для более регулярного выражения помощи.

Ответ №1

Затем я потерял первую строку “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

Оцените статью
TechArks.Ru
Добавить комментарий