You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中从字符串提取最后一个AUTHORITY片段(如AUTHORITY["EPSG","6737"])

提取最后一个AUTHORITY片段的实现方法

可以用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 23:05:21