将列表中的字符串交换为整数(Python)

时间:2017-11-12 16:06:01

标签: python arcpy

我正在尝试使用arcpylist坐标添加到shapefile,我正在使用此代码:

with open("pathtomyfile") as f1:
    for line in f1:
        str = line.split()
        mylist.append(str)
fc = "pathtomyshapefile"
cursor = arcpy.da.InsertCursor(fc, ["SHAPE@XY"])
for row in mylist:
    cursor.insertRow(row)
del cursor

但是我遇到了一个错误:

TypeError: sequence size must match size of the row

我意识到这是由我的列表看起来像:

[['1.222', '3.3333'],['333.444', '4444.5555']]

而不是

[[1.222, 3.3333],[3.4444, 4.55555]]

但我不知道如何解决它。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

所以如果你有list

l = [['1.222', '3.3333'],['333.444', '4444.5555']]

然后您要做的是将每个元素转换为float,这可以通过以下方式完成:

[[float(i) for i in j] for j in l]

outputslist内容:

[[1.222, 3.3333], [333.444, 4444.5555]]

经过进一步检查,您似乎真的想要output

[[1.222, 3.3333],[3.4444, 4.55555]]

在这种情况下,你可以简单地做:

[[float(i[i.index('.')-1:]) for i in j] for j in l]

或者:

[[float(i) % 10 for i in j] for j in l]

但由于Python处理它们的方式,第二个选项导致稍微关闭floats

[[1.222, 3.3333], [3.444000000000017, 4.555500000000393]]