将字符串字段转换为arcpy中的数字字段

时间:2015-04-22 16:46:24

标签: python type-conversion arcgis arcpy

我有一个大的(> 1000)个文件,其中有些字段包含定义为文本字段的数字。我需要有一个包含这些值的字段作为数字。我可以添加新字段,但是当我没有填充它们时。

我正在使用ArcGis 10.1。行可以具有0-10的值,并且包括最多一个小数位,或者它们对于变量可以是空的(实际上是空白的,没有占位符)。

下面是我用于两个变量(N_CTN_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'

1 个答案:

答案 0 :(得分:0)

您可以使用以下命令将字符串值转换为float的整数:

stringA = '12'
# Convert string to integer: 
int(stringA)
# Convert string to float 
float(stringA)