ArcGIS Pro 字段是字符串,有数字,英文和汉字,只提取英文字母,字段计算器中Python怎么写

文摘   2024-11-24 07:55   云南  

在 ArcGIS Pro 的字段计算器中,可以使用 Python 表达式和正则表达式来提取字符串字段中的英文字母。以下是具体步骤和代码示例:


操作步骤

  1. 打开 ArcGIS Pro 的字段计算器。

  2. 选择目标字段或创建一个新字段来存储提取的英文字母。

  3. 将语言选择为 Python 3

  4. 在代码框中输入以下内容。


Python 表达式代码

主表达式:

python

复制代码

extract_english_letters(!字段名称!)

代码块:

python

复制代码

import re

def extract_english_letters(input_string):
# 如果字段值为空,返回空字符串
if input_string is None:
return ''
# 使用正则表达式提取英文字母
english_letters = re.findall(r'[a-zA-Z]+', input_string)
# 将提取的字母列表拼接成单个字符串
return ''.join(english_letters)


代码说明

  1. !字段名称!:将其替换为你的实际字段名称。

  2. 正则表达式 [a-zA-Z]+

  • 匹配所有英文字母(包括大小写)。

  • + 表示匹配一个或多个连续的字母。

  • return ''.join(english_letters)

    • 将提取出的字母拼接为一个字符串。

    • 如果需要用空格或逗号分隔字母,可以改为 return ' '.join(english_letters)return ','.join(english_letters)

  • 空值处理:如果字段值为空(None),直接返回空字符串,避免报错。


  • 示例

    输入字段值:

    • abc123中国abc

    • 汉字123EnglishEnglish

    • 123456 → (空)

    • 你好World123World

    结果:

    执行计算后,新字段中只保留原始字段中的英文字母。


    扩展

    如果你需要进一步操作,比如统计字母数量或只提取首个字母串,可以对代码进行调整。例如:

    返回首个英文字母串:

    python

    复制代码

    def extract_first_english_letters(input_string):
    if input_string is None:
    return ''
    english_letters = re.findall(r'[a-zA-Z]+', input_string)
    return english_letters[0] if english_letters else ''

    返回英文字母总数:

    python

    复制代码

    def count_english_letters(input_string):
    if input_string is None:
    return 0
    english_letters = re.findall(r'[a-zA-Z]', input_string)
    return len(english_letters)


    希望这段代码能满足你的需求!如果有其他问题,随时告诉我!

    GISAI
    ArcGIS培训和二次开发
     最新文章