我有一个包含以下格式的字母数字值的字段:
A-AA00
有时他们也是
A-AAA0
我需要一个Python脚本,可以将其放入ArcMap 10的字段计算器中,该脚本至少将删除数字字符,并重新训练字母和连字符。这样,例如:
A-AA0
变成这个:
A-AA
我还想用另一个字段中的数字字符替换数字字符。这个Stack Exchange条目解决了这个问题,但是字符串在数字前有一个空格,可以用于拆分和索引...我的字符串不是那么容易构造的。
我有一个包含以下格式的字母数字值的字段:
A-AA00
有时他们也是
A-AAA0
我需要一个Python脚本,可以将其放入ArcMap 10的字段计算器中,该脚本至少将删除数字字符,并重新训练字母和连字符。这样,例如:
A-AA0
变成这个:
A-AA
我还想用另一个字段中的数字字符替换数字字符。这个Stack Exchange条目解决了这个问题,但是字符串在数字前有一个空格,可以用于拆分和索引...我的字符串不是那么容易构造的。
Answers:
我会使用正则表达式。如果将以下内容放在计算器的代码块部分中,它将返回一个字符串,该字符串将除去所有数字,无论它们是什么:
import re
def strip_digits(s):
return re.sub("\d+", "", s)
然后可以在计算框中将其调用为:
strip_digits(!column_name!)
如果要替换字符,请在函数中为替换字符添加另一个参数,然后将其替换为空字符串。
我也在地图绘制中心(arcgis.com)中找到了它。
资源中心文本管理工具
它是为9.2 / 9.3编写的旧代码。不确定适用于10.x的描述为...
- 批量查找和替换:此工具使用在“查找/替换”表中指定的替换字符串填充文本字段中的字符串。这对于标准化标签字符串或引入和执行标准缩写很有用。
- 将文本转换为适当的大小写:此工具将一个字段(假定全部为大写或全部小写)中的文本字符串转换为另一(新)字段中的适当大小写(大小写混合)文本字符串。编写此工具是为了处理东北的NE等常见缩写,因此它不会以Ne出现。
- 提取高速公路盾牌标签的高速公路编号:将高速公路名称的数字部分添加到另一个文本字段。
所有这些工具都是用Python编写的,可以进行修改以满足您的任何特定需求。
我将从这个简单的案例开始:
>>> x = "A-AA00"
>>> print x
A-AA00
>>> print x.replace("0","")
A-AA
>>>
然后,ArcGIS 10帮助中的一些Python代码块示例将为您提供总体解决方案的先机。