TypeError:无法连接'str'和'int'对象(Inraster.Append)

时间:2014-04-04 19:16:37

标签: python

下午。

我被扔到了狼群中,所以在蟒蛇世界里说话;新工作递给我脚本,并希望我调整它们以适应各种数据集。

这是我修改过的代码:

#import arcpy module
import arcpy
arcpy.env.overwriteOutput = True
arcpy.env.workspace = "D:\\XXXXX_ET_data"

#Check out any necessary licenses
arcpy.CheckOutExtension("spatial")

#Local variable:
Inpoints = "D:\\XXXXX_ET_data\\XXX_priority_locations_03112014Copy.shp"
fdata = "01,02,03,04,05,06,07,08,09,10,11,12,13"
fdata = fdata.split(",")

#initalizing the list
Inraster = []

#build list of inputs
for month in range (01, 13):
    for line in fdata:
        date = str(line+(month))
        Inraster1 = ["ma"+date+".modis.tif", date]
        Inraster.append(Inraster1)

#Process: Extract Multi Values to Points
arcpy.sa.ExtractMultiValuesToPoints(Inpoints, Inraster, "NONE")
arcpy.gp.ExtractMultiValuesToPoints_sa(Inpoints, Inraster, "NONE")

我知道我的错误在line 21: date = str(line+(month)),所以我想知道如何解决这个问题;提前谢谢!

4 个答案:

答案 0 :(得分:2)

monthint。在将其与str连接之前,将其转换为line

date = str(line+str(month))

这将消除错误。但我不确定它是否符合程序的逻辑,因为我不知道预期的输出。

答案 1 :(得分:2)

在Python中,+执行字符串连接以及添加intfloat s。

该行:

date = str(line+(month))

失败是因为表达式:

line+(month)

尝试使用字符串和int作为+的操作数。如果要进行字符串连接,请使用:

line+str(month)

这会在执行字符串连接之前将整数month转换为其字符串表示形式。

完整的一行变为:

date = line+str(month)    

“外部”str()是多余的,因为RHS已经是一个字符串。

答案 2 :(得分:0)

使用格式字符串

date_str = "{0}{1}".format(line,month)

答案 3 :(得分:0)

for line in fdata:
    date = str(line+(month))
    Inraster1 = ["ma"+date+".modis.tif", date]
    Inraster.append(Inraster1)

这样做的更加pythonic方式是:

ext = str(month) + ".modis.tif"
Inraster = ['{}{}{}'.format("ma", line, ext) for line in fdata]