ArcGIS 10.0
我使用arcpy.UpdateCursor访问我的字段:
import arcpy
import sys
layer = sys.argv[1]#my table
field = sys.argv[2]#target field in table
cursor = arcpy.UpdateCursor(layer)
for row in cursor:
attrString = row.getValue("field")
subString = attrString[3]
row.setValue(field,subString)
cursor.updateRow(row)
我的问题是我想访问字符串的元素,它具有变量“row”,但它不支持索引而且不可迭代。 你能推荐其他方法吗?
答案 0 :(得分:0)
有关UpdateCursors和Accessing data using cursors的ArcGIS帮助页面是有用的背景信息。
UpdateCursor
函数创建一个"光标"对象,由" row"组成。对象。这些行中的每一行都代表要素类或图层的单个要素。
要从row
对象访问数据(无论是读取还是更新),您需要指定字段名称而不是数字索引。因此,如果您要检查属性letter
是否等于E
:
if row.getValue("letter") == "E":
# do stuff
一旦你将该属性值存储在另一个变量中,就可以访问结果字符串的元素并执行所需的任何Python字符串操作:
attrString = row.getValue("street")
subString = attrString[11]
newString = attrString.replace("B", "t")
attrString[11] = "t"
答案 1 :(得分:0)
问题解决。我将“field”替换为field,现在工作正常。
import arcpy
import sys
layer = sys.argv[1]#my table
field = sys.argv[2]#target field in table
cursor = arcpy.UpdateCursor(layer)
for row in cursor:
attrString = row.getValue(field)
subString = attrString[3]
row.setValue(field,subString)
cursor.updateRow(row)
答案 2 :(得分:0)
使用较新版本的游标: arcpy.da.UpdateCursor,你将拥有我认为你最初看的行[field]索引。
您必须使用ArcGIS> = 10.1才能访问da。游标。 ArcGIS 10.3 Help for arcpy.da