一两年后,我变得非常熟练,使用ArcGIS中的数据模型来处理属性表。 ArcGIS使用Access类型的数据库,使用户可以添加,删除和修改字段。在ArcGIS接口中,我可以创建一个新列,然后使用Python使用称为“字段计算器”的东西在此列上运行脚本。例如,以下算法将“230 04th street”作为输入字符串并将其转换为“230 4th street”。它也做了一些适合该项目的替代品。Access中的复杂文本解析
def calc(f1,f2,f3):
#where f1 is address number, f2 is address name and f3 is address suffix
#Strip trailing and ending spaces from all fields
#Define list
remove_list = ['01ST', '02ND', '03RD', '04TH', '05TH', '06TH', '07TH', '08TH', '09TH']
#Homogenize single digit address names
if f2 in remove_list:
f2 = f2.replace('0','')
else:
f2 = f2
f1 = str(f1).replace('.0','')
#strip leading and trailing spaces
f1 = f1.strip()
f2 = f2.strip()
f3 = f3.strip()
#adapt address number to string format
#Concatenate full address name
x = f1+' '+f2+' '+f3
#Return Full address name
return x
我想在Access中具有类似的灵活性。在Access中最接近ArcGIS的“字段计算器”是“表达式生成器”。这个表达式生成器对于简单的修改是可以的,但对于更复杂的字符串解析算法使用起来很麻烦。 Access中的任何内容是否为单个字段提供了这种脚本?我们可以在表达式生成器中使用VBA或其他语言吗?也许只是SQL是解决方案?
您的脚本片段在Visual Basic中完全可行。 VB是Access的脚本语言。您不要在表达式构建器中使用VB“内部”,相反,您可以使用VB中的表达式构建器。我们可以有解析算法的“更复杂的字符串”的例子吗? –
@PaulOgilvie - 不是一个坚持者,但你的意思是Visual Basic for Applications。 VBA是MS Office的编码接口,而不是通用语言VB。 VB大师将适合这种用词不当。 – Parfait