2014-03-29 2 views
0

필드에서 약어를 바꾸기 위해 업데이트 커서를 사용하려고합니다 (예 : ST를 STREET, AVE를 AVENUE 등으로 변경). 그러나이 작업을 수행 할 수없는 것 같습니다. 나는 모든 순열을 시도했지만 분명히 뭔가를 놓쳤다. 코드는 실행되지만 필드를 변경하지 않습니다. 어떤 제안? 많은 감사arcpy에서 replace 함수를 어떻게 사용합니까?

import arcpy 
from arcpy import env 
env.workspace = "C:/data" 

fc = "blah.shp" 

cursor = arcpy.da.UpdateCursor(fc, ["BLAH_BLAH"]) 

for row in cursor: 
    row = row.replace("ST", "STREET") 
    cursor.updateRow(row) 

del row 
del cursor 

답변

0

행은 직접 함께 필드 값에 액세스 할 수없는 필드의 목록입니다. 대신 필드 색인을 사용하십시오. row[0] = row[0].replace("ST", "STREET")

+0

감사합니다. 나는 그것을 알아 냈다.하지만 일어나는 일은 키 변화의 모든 사례 (예 : Bathurst St는 Bathurstreet Street 등이된다)이다. 행을 분할하고 ST 또는 AVE 등으로 끝나는 행만 찾는 것을 시도했지만 문자열의 마지막 섹션 만 [-1] 바꾸어야한다는 것을 나타내는 데 어려움이 있지만 작동하지 않습니다. 나는 내 코드가 꺼져 있다고 생각한다. 나는 내 코드가 없지만 나중에 게시 할 것이다. 그런데 도움을 주셔서 감사합니다. 고맙습니다. –

+0

바꿀 문자열에 공백을 추가하십시오 : .replace ("ST", "STREET"). 데이터에서 어떤 특별한 경우가 발생하는지는 모르겠지만 적어도 일부는 도움이 될 수 있습니다. – GISGe

+0

나는 그것을 알아낼 수 있었고 나의 문제를 해결했다. 그러나 나는 나의 결과를 어떻게해서든지 게시 할 것이다라고 생각했다. 당신의 도움을 주셔서 감사합니다! arcpy 수입 ENV에서 수입 arcpy env.workspace = "C :/데이터" FC = "BLAH.shp" 커서 = arcpy.da.UpdateCursor (FC [ "ST_NAME"])에 대한 커서의 행 : 행 addrlist = [0] .rsplit() addrlist 경우에 'ST'[-1] addrlist = 로우 [0] .rsplit() addrlist.pop (-1) addrlist. append ('STREET') row [0] = ''. 조인 (addrlist) –

관련 문제