一兩年後,我變得非常熟練,使用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