当前位置:首页>python>ArcGIS 10.8字段计算器Python字符串 7 大字符串函数|截取、规范、判断、修复全搞定

ArcGIS 10.8字段计算器Python字符串 7 大字符串函数|截取、规范、判断、修复全搞定

  • 2026-09-05 03:47:00
ArcGIS 10.8字段计算器Python字符串 7 大字符串函数|截取、规范、判断、修复全搞定

✅ ArcGIS 10.8专属 · Python 2.7解析器 · 附直接可复制表达式+速查表          ✅ 不用写复杂脚本,右键属性表就能用,GISer高效摸鱼必备!

各位ArcGIS 10.8的老GISer们,有没有过这样的崩溃时刻?

👉 中文老DBF打开全是乱码,试了N种方法都救不回来;          👉 想从完整文件路径里提取文件名/后缀,VB Script写得头秃;          👉 英文地名、字段内容大小写混乱,规范起来太费力;          👉 地址数据缺省“省/市/区”,一条条检查要人命;          👉 Excel导进来的制表符,导致属性表显示、导出全不对齐……

其实这些痛点,根本不用死磕复杂脚本!

只要切换到Python 2.7解析器,用自带的字符串方法,就能一键搞定!今天就给大家整理了8个出场率90%+、无冗余、直接复制就能用的方法,附速查表+避坑指南,看完直接上手,效率翻倍~

💡 前置准备(必看!避免白忙活)

先做好这2步,后续操作不踩坑,还能保护原始数据!

1新建字段(重中之重):绝对不要直接覆盖原字段!右键属性表空白处 → 添加字段 → 选对输出类型(文本型存字符串、短整型存数字、长整型存大数字)→ 确定。

1打开字段计算器+切换解析器:右键新字段标题 → 字段计算器 (Field Calculator) → 顶部解析器选【Python】(默认是VB Script,一定要改!)→ 进阶用法可勾选【显示代码块】。

⚠️ 全局避坑指南(速查表前必看)

划重点!ArcGIS 10.8对应的是Python 2.7,这5个坑绝对不能踩,否则全白干!

1字段名在表达式里,必须用英文双感叹号!! 括起来,不能用中文【】;

1路径里的反斜杠要转义,用\\(比如C:\\GIS数据,不是C:\GIS数据);

1代码块里,绝对不能用中文函数名、中文变量名;

1所有引号必须是英文引号(单双都可,统一风格就好),中文引号会报错;

1永远不要直接覆盖原字段,先测试1-2条记录,没问题再批量执行!

📌 核心速查表(建议截图/收藏)

最实用的部分来了!直接对照场景找方法,表达式复制就能用,建议截图存在手机里,随用随查~

方法名

核心功能

字段计算器专属表达式

属性表高频场景

避坑提示

[:]

截取/复制字符串片段

!完整路径![-4:]

提取文件名后缀、截取字段前N位

索引从0开始,负数从右数

capitalize()

首字母大写,其余英文小写

!英文名称!.capitalize()

统一英文地名/字段规范

开头是中文/数字/符号,只转后面的英文

count()

统计子串出现次数

!地址!.count("市")

检查地址完整性、统计关键词

区分大小写,中文无影响

endswith()/startswith()

判断后缀/前缀

!文件名!.endswith(".shp")

筛选特定类型文件、特定开头地名

多个后缀/前缀用英文元组:(".shp", ".tif")

expandtabs()

制表符\t转空格

!原始内容!.expandtabs(4)

解决Excel导入/导出不对齐

无\t时表达式无变化

encode/decode

中文乱码修复(杀手锏)

见下方方法详解

国内老DBF/新UTF-8 DBF乱码

分两种场景,不能搞反!

center()

字符串居中对齐

!备注!.center(20, "*")

备注字段美化、临时标记

单独用场景少,进阶配合代码块

🔧 方法详解+直接复制表达式

每个方法都配了具体场景、示例和避坑提示,新手也能轻松上手,再也不用翻官方文档!

1. [:] 字符串切片:灵活截取字段内容

语法简化:!字段名![start:end:step]          - start:起始索引(包含,默认0)          - end:结束索引(不包含,默认到最后)          - step:步长(默认1,负数倒序)

实操示例:假设字段叫【文件路径】,内容是 C:\GIS数据\2025年\主城区宗地.shp

需求

字段计算器表达式

结果示例

提取后缀名

!文件路径![-4:]

.shp

提取不带后缀的文件名

!文件路径!.split("\\")[-1][:-4]

主城区宗地

截取前10个字符

!文件路径![:10]

C:\GIS数据

截取除了最后4位的部分

!文件路径![:-4]

C:\GIS数据\2025年\主城区宗地

避坑提示:Mac/Linux路径把\\换成/;如果end超出字符串长度,会自动截断到最后,不会报错。

2. capitalize():首字母大写,统一英文规范

语法简化:!字段名!.capitalize()

实操示例:假设字段叫【英文名称】

原始内容

表达式

输出结果

arcgis pro

!英文名称!.capitalize()

Arcgis pro

BEIJING

!英文名称!.capitalize()

Beijing

123xianggang

!英文名称!.capitalize()

123xianggang

避坑提示:只转换第一个字符的大小写,中间的大写会被转成小写;中文、数字、符号开头的内容,开头无变化。

3. count():统计子串出现次数,数据清洗神器

语法简化:!字段名!.count("子串")

实操示例:假设字段叫【地址】

需求

表达式

输出说明

统计地址里有几个“市”

!地址!.count("市")

返回数字,例如1

统计地址里有几个“路”

!地址!.count("路")

返回数字,例如 2

进阶用法(配合代码块批量标记):比如批量检查地址是否完整,勾选【显示代码块】后,粘贴以下内容:

plain text                  def check_addr(addr):                  if addr.count("省") > 0 and addr.count("市") > 0:                  return "完整"                  else:                  return "不完整"

表达式框粘贴:check_addr(!地址!)

避坑提示:区分英文大小写,中文无影响;子串重叠时不会重复统计(例如"aaa".count("aa")返回1)。

4. endswith()/startswith():判断前后缀,批量筛选

语法简化:          - 判断后缀:!字段名!.endswith("后缀")          - 判断前缀:!字段名!.startswith("前缀")          - 多个后缀/前缀:!字段名!.endswith((".shp", ".tif", ".dbf"))

实操示例:假设字段叫【文件名】

需求

表达式

输出结果(True/False)

判断是否为shp文件

!文件名!.endswith(".shp")

True 或 False

判断是否为影像文件

!文件名!.endswith((".tif", ".img", ".jpg"))

True 或 False

判断是否以“北京”开头

!文件名!.startswith("北京")

True 或 False

避坑提示:多个后缀/前缀必须用英文元组(小括号),不能用列表(中括号);区分英文大小写,建议先统一转小写:!文件名!.lower().endswith(".shp")。

5. expandtabs():制表符转空格,解决对齐问题

语法简化:!字段名!.expandtabs(空格数)          - 空格数默认8,常用4个空格,适配属性表显示

实操示例:假设字段叫【原始内容】,里面有制表符\t

需求

表达式

把制表符换成4个空格

!原始内容!.expandtabs(4)

把制表符换成8个空格(默认)

!原始内容!.expandtabs()

避坑提示:字段中无\t时,表达式执行后无变化;可以先新建一个字段测试,确认是否存在制表符。

6. encode/decode:中文乱码修复(杀手锏!)

这是最实用的方法之一!国内ArcGIS属性表乱码,99%都是编码问题,用这两个方法就能救回来~

核心逻辑(Python 2.7专属):          ArcGIS 10.8默认用cp1252(Latin-1)读取数据,而国内老DBF是GBK/GB2312编码、新数据可能是UTF-8编码,导致字节串被错误解码,出现乱码。

实操步骤:新建一个文本型字段(比如叫【正确名称】),对应乱码字段(比如【乱码名称】),根据场景复制表达式(不能搞反!)

1场景A:国内老DBF(GBK/GB2312编码) → 90%的乱码用这个!          !乱码名称!.encode('cp1252').decode('gbk')

1场景B:新UTF-8 DBF(部分导出数据) → 场景A不行再试这个!          !乱码名称!.encode('cp1252').decode('utf-8')

避坑提示:必须新建文本型字段,不能直接在乱码字段上修改;先测试1-2条记录,没问题再批量;如果两种方法都不行,试试用Excel打开DBF,另存为CSV格式后再导入ArcGIS。

7. center():字符串居中对齐,备注美化

语法简化:!字段名!.center(总宽度, 填充字符)          - 总宽度是必选参数(比如20,代表字符串总长度);          - 填充字符默认是空格,可自定义(比如*、#)。

实操示例:假设字段叫【备注】

需求

表达式

结果示例(总宽度20)

居中对齐,空格填充

!备注!.center(20)

已处理

居中对齐,*号填充

!备注!.center(20, "*")

******已处理******

✅ 总结

其实ArcGIS 10.8的字段计算器,只要用对Python字符串方法,就能告别繁琐操作,轻松搞定90%的属性表清洗需求!

不用写复杂脚本,不用记晦涩语法,右键属性表+复制表达式,新手也能快速上手。建议把前面的速查表截图收藏,下次清洗数据时,直接对照找方法,节省大量时间~

最后提醒一句:操作前一定要备份原始数据,避免误操作哦!祝各位GISer高效办公,少加班、多摸鱼👇 

💡 觉得有用的话,记得点赞+收藏+关注,后续会分享更多ArcGIS字段计算器进阶技巧、属性表清洗干货,帮你搞定更多实操痛点,再也不用为数据清洗头疼!

最新文章

随机文章