我有一个大的(> 1000)个文件,其中有些字段包含定义为文本字段的数字。我需要有一个包含这些值的字段作为数字。我可以添加新字段,但是当我没有填充它们时。
我正在使用ArcGis 10.1。行可以具有0-10的值,并且包括最多一个小数位,或者它们对于变量可以是空的(实际上是空白的,没有占位符)。
下面是我用于两个变量(N_CT
和N_CFY
)的python脚本,以及我得到的错误。看起来我的问题在于如何将文本值传输到十进制转换。
我是脚本新手,所以如果我的描述或单词选择不清楚,请原谅。
import arcpy, os, sys
from arcpy import env
from decimal import *
arcpy.env.overwriteOutput = True
env.workspace = "C:\Users\OuelletteMS\Desktop\Ice_Data_testarea"
listFCs = arcpy.ListFeatureClasses("*")
for fc in listFCs:
print str("processing " + fc) # displays the file that is currently being handled
strNCT = "N_CT" # the current, text version of the field
newNCT = "NCT" # the new, number version I want to create
strNCFY = "N_CFY" # the current, text version of the field
newNCFY = "NCFY" # the new, number version I want to create
arcpy.AddField_management(fc,newNCT,"DOUBLE")
arcpy.AddField_management(fc,newNCFY,"DOUBLE")
cursor = arcpy.UpdateCursor(fc)
for row in cursor:
row.setValue(newNCT, row.getValue(Decimal(strNCT)))
row.setValue(newNCFY, row.getValue(Decimal(strNCFY)))
cursor.updateRow(row)
错误消息:
运行时错误Traceback(最近一次调用最后一次):File"", 第23行,在文件" C:\ Python27 \ ArcGIS10.1 \ Lib \ decimal.py"中, 第548行, new "十进制的文字无效:%r" %value)_raise_error中的文件" C:\ Python27 \ ArcGIS10.1 \ Lib \ decimal.py",第3844行 引发错误(说明)InvalidOperation:十进制的文字无效:' N_CT'
答案 0 :(得分:0)
您可以使用以下命令将字符串值转换为float的整数:
stringA = '12'
# Convert string to integer:
int(stringA)
# Convert string to float
float(stringA)