ArcGIS中的Python。需要访问字符串元素

时间:2016-03-23 07:09:47

标签: python cursor arcgis arcpy

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”,但它不支持索引而且不可迭代。 你能推荐其他方法吗?

3 个答案:

答案 0 :(得分:0)

有关UpdateCursorsAccessing 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