【问题标题】:if row[0] is equal row[1] then row[2] is None如果 row[0] 等于 row[1] 那么 row[2] 是 None
【发布时间】:2023-02-16 13:54:51
【问题描述】:

我正在用 Python 2.7 编写我的第一个脚本。 (这是我在这里的第一个问题/帖子,完全是关于 Python 脚本的)

解决/发现了几乎所有问题,除了一个。

我不知道如何为 arcpy.da.UpdateCursor 编写以下内容:

如果 row[0] 等于 row[1] 那么 row[2] 是 None

任何建议表示赞赏。

我期待对我的问题的相关回答。

这是我的问题的正确代码和解决方案。

import arcpy

    fc = 'C:/DB/yourDB.gdb/yourFeatureClass.shp'
    fields = ['field0', 'field1', 'field2']
    
    with arcpy.da.UpdateCursor(fc, fields) as cursor:
        for row in cursor:
            if (row[0] == row[1]):
                row[2] = None
            cursor.updateRow(row)
    
    del cursor

【问题讨论】:

  • 请提供您的代码的minimum reproducible example。此外,快速查看 ArcGIS UpdateCursor 的文档,有一个“代码示例”、“UpdateCursor 示例 1”似乎可以回答您的问题。
  • 附带说明一下,如果您是新手学习编程,除非您有非常充分的理由,否则我建议您学习 python3 而不是 python2.7,因为它已经弃用 3 年了,而且我看到 ArcGIS 确实支持蟒蛇3。
  • 感谢 EricChen1248 的热心回复!我弄清楚代码出了什么问题。我已经从您提供的链接的页面上看到了该示例,但就在今天,我才知道我需要修改什么。我将在正确的代码下方发表评论。我非常感谢您关于优先选择 Python 3 而不是 2.7 的建议。我完全同意你的看法,但我的脚本将使用的环境基于使用 Python 2.7 的 ArcMap 10.2.2,这就是你提到的“强有力的理由”。我用 Python 3 编写了这个脚本,完成了大约 70% 的功能,然后不得不为 2.7 重写它。

标签: python-2.7 arcpy


【解决方案1】:

这是我的问题的正确代码和解决方案。

import arcpy

    fc = 'C:/DB/PGDB.gdb/Parcel_point.shp'
    fields = ['NEWNUMBER', 'NEWNUMBER1', 'NEWNUMBER2']
    
    with arcpy.da.UpdateCursor(fc, fields) as cursor:
        for row in cursor:
            if (row[0] == row[1]):
                row[2] = None
            cursor.updateRow(row)
    
    del cursor

【讨论】:

  • 您的答案可以通过其他支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写出好的答案的信息in the help center
猜你喜欢
  • 2012-04-13
  • 2021-10-08
  • 1970-01-01
  • 2023-03-24
  • 2021-07-18
  • 1970-01-01
  • 2014-10-30
  • 2020-06-24
  • 1970-01-01
相关资源
最近更新 更多