如何在Python中从字符串提取最后一个AUTHORITY片段(如AUTHORITY["EPSG","6737"])
可以用Python的re正则模块快速实现,匹配所有符合格式的AUTHORITY片段后取最后一个即可,代码如下:
import re a = 'PROJCS["Korea",GEOGCS["K 2000",DATUM["Geocentric_datum",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6737"]]]]' # 匹配所有AUTHORITY["...","..."]格式的片段 authority_items = re.findall(r'AUTHORITY\["[^"]+","[^"]+"\]', a) # 取列表最后一个元素 last_authority = authority_items[-1] if authority_items else None print(last_authority) # 输出:AUTHORITY["EPSG","6737"]
正则表达式说明
AUTHORITY\[:匹配固定开头AUTHORITY[(转义方括号是因为它在正则中有特殊含义)"[^"]+":匹配双引号包裹的任意内容([^"]+表示匹配除双引号外的任意字符,确保只截取当前双引号内的内容)- 整个表达式能精准捕获每一个符合格式的AUTHORITY片段,再通过列表索引
[-1]直接获取最后一个结果。
如果不想用正则,也可以通过定位最后一个AUTHORITY的起始位置,再匹配对应的闭合方括号,适合处理嵌套结构:
a = 'PROJCS["Korea",GEOGCS["K 2000",DATUM["Geocentric_datum",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6737"]]]]' start_pos = a.rfind('AUTHORITY[') if start_pos != -1: end_pos = start_pos bracket_count = 1 # 遍历找到对应的闭合方括号 while end_pos < len(a) and bracket_count > 0: end_pos += 1 if a[end_pos] == '[': bracket_count += 1 elif a[end_pos] == ']': bracket_count -= 1 last_authority = a[start_pos:end_pos+1] else: last_authority = None print(last_authority) # 输出:AUTHORITY["EPSG","6737"]
内容的提问来源于stack exchange,提问作者Vas
相关产品推荐
相关产品推荐

