Python 在arcpy中将字符串字段转换为数字字段

Python 在arcpy中将字符串字段转换为数字字段,python,type-conversion,arcgis,arcpy,Python,Type Conversion,Arcgis,Arcpy,我有大量(>1000)文件,其中有一些字段包含定义为文本字段的数字。我需要有一个包含这些值作为数字的字段。我可以添加新字段,但当我无法填充它们时 我使用的是ArcGis 10.1。行的值可能在0-10之间,最多包含一个小数位,或者对于变量,行可能为空(实际上为空,没有占位符) 下面是我用于两个变量(N\u CT和N\u CFY)的python脚本,以及我得到的错误。看起来我的问题在于如何将文本值转换为十进制转换 我不熟悉脚本,所以如果我的描述或单词选择不清楚,请原谅 import arcpy,

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

我使用的是ArcGis 10.1。行的值可能在0-10之间,最多包含一个小数位,或者对于变量,行可能为空(实际上为空,没有占位符)

下面是我用于两个变量(
N\u CT
N\u 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)
错误计量表:

运行时错误回溯(上次调用):文件“”, 第23行,在文件“C:\Python27\ArcGIS10.1\Lib\decimal.py”中, 第548行,在新建中 十进制无效的文本:%r“%value”)文件“C:\Python27\ArcGIS10.1\Lib\Decimal.py”,第3844行,出现错误 raise error(解释)InvalidOperation:十进制无效文字:“N\u CT”


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

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

我真的需要保留小数点,所以整数被去掉了,而float不能很好地保留精确的小数点(3.3 vs 3.29999997)。我真正的问题似乎是如何将字符串传递到Decimal函数中。也许你可以看看这里::一个float()会将所有数字保留在点或逗号后面。我的float问题不是它不会将所有数字保留在小数点之后,而是它添加的所有exra数字。有什么理由我不应该使用十进制函数吗?十进制函数很好用。我还想给你看这个:print(“%.2f”%stringA)这个只保留2位小数。我意识到我并没有像我想的那样将它发布到GIS论坛上。有没有办法把它转移到那个论坛?