繁体   English   中英

从 python 中给出的字符串中提取模式

[英]Extract a pattern from the string given below in python

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.028UTM Y:4.567.841

我想要一种通用的方法来解析这种格式,因为数字的长度不同。 但是所有字符串输入都将具有相似的结构。

使用正则表达式。 根据中间的文本是固定的还是可变的,您可以将其按原样插入到您的模式中,或使用\.+

>>> 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+来匹配数字。 我包括了点,因为在您的示例中点的数量似乎是可变的。

您应该详细说明可能出现的精确模式以及它周围的字符串可以改变多少。 但假设您搜索“UTM X:”或“UTM Y:”后跟一系列数字组,这些数字组在通用字符串中由点分隔,您可以使用:

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

返回一个列表:

['UTM X:499.028', 'UTM Y:4.567.841']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM