Извлеките шаблон из строки, приведенной ниже в python - PullRequest
0 голосов
/ 23 апреля 2020
string_input = 'HijesProvincia:GuadalajaraUTM X:499.028CC.AA.:Comunidad Autónoma de Castilla-La ManchaUTM Y:4.567.841Huso:30Cota:1244 m.s.n.m.Tipo de punto:'

В этой строке мне нужно извлечь UTM X:499.028 и UTM Y:4.567.841.

Я хочу обобщенный способ разбора этого формата, потому что числа будут разной длины. Но все строковые входы будут иметь одинаковую структуру.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Вы должны детализировать точный шаблон, который может появиться, и насколько может измениться строка вокруг него. Но при условии, что вы ищете «UTM X:» или «UTM Y:», за которым следует последовательность групп цифр, разделенных точкой в ​​строке c, вы можете использовать:

import re 
...
re.findall('(UTM [XY]:[\d.]+)', string_input)

, которая возвращает список:

['UTM X:499.028', 'UTM Y:4.567.841']
0 голосов
/ 23 апреля 2020

Используйте регулярные выражения. В зависимости от того, является ли текст между ними фиксированным или переменным, вы можете вставить его как есть в вашем шаблоне или использовать \.+:

>>> import re

>>> p = re.compile('HijesProvincia:Guadalajara(UTM X:[0-9.]+).+(UTM Y:[0-9.]+)')
>>> m = p.search(string_input)
>>> m.groups()
('UTM X:499.028', 'UTM Y:4.567.841')

Обратите внимание, что я использую [0-9.]+ вместо \d+ для соответствовать номеру. Я включил точку, потому что количество точек в вашем примере кажется переменным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...