我研究了具有相同错误结果的帖子,但是当我的光标在我的表中遇到空值并尝试执行拆分时,我认为我正在发生这种情况。我尝试使用条件语句让程序继续运行,如果它遇到None值但仍然得到相同的错误。这是我的代码:
f1 = "Address"
f2 = "Cust1stStWord"
f3 = "ST_NM_BASE"
f4 = "Street1stStWord"
print "Running cursors"
with arcpy.da.UpdateCursor("gimLyrJoin",[f1, f2, f3, f4]) as cursor:
for row in cursor:
if row[2] != None:
continue
# first update fields with street names that have directional prefixes
if len(row[0].split(" ")[1]) == 1 and row[0].split(" ")[2] != "ST":
row[1] = row[0].split(" ")[2][0:3]
row[3] = row[2].split(" ")[2][0:3]
# now look for street names that start with SAINT in customer records and change them to ST
elif row[0].split(" ")[1] == "SAINT":
row[1] = "ST "
row[3] = row[2].split(" ")[1][0:3]
#Change remaining records to first three letters of street name
else:
row[1] = row[0].split(" ")[1][0:3]
row[3] = row[2].split(" ")[1][0:3]
cursor.UpdateRow(row)
这是错误:
Traceback (most recent call last):
File "N:\Python\Completed scripts\GIM_Street_Updates.py", line 78, in <module>
row[3] = row[2].split(" ")[1][0:3]
AttributeError: 'NoneType' object has no attribute 'split'
答案 0 :(得分:0)
在循环开始时,我提出了一个条件,找到row [2] == None,将值更改为&#34; &#34;并在条件结束时输入Updaterow(行)并继续语句,因此split方法不会在循环中稍后抛出错误:
with arcpy.da.UpdateCursor("gimLyrJoin",[f1, f2, f3, f4]) as cursor:
for row in cursor:
# fix null values
if row[2] == None:
row[2] = " "
cursor.updateRow(row)
continue
elif len(row[0].split(" ")[1]) == 1 and row[0].split(" ")[2] != "ST":
row[1] = row[0].split(" ")[2][0:3]
# ST_NM_BASE seems to not include prefix so okay to 0 index
row[3] = row[2].split(" ")[0][0:3]
# now look for street names that start with SAINT in customer records and change them to ST
elif row[0].split(" ")[1] == "SAINT":
row[1] = "ST "
row[3] = row[2].split(" ")[0][0:3]
#Change remaining records to first three letters of street name
else:
row[1] = row[0].split(" ")[1][0:3]
row[3] = row[2].split(" ")[0][0:3]
cursor.updateRow(row)