我在ArcGIS 10.2中使用字段计算的表达式时遇到问题。我已经尝试过使用Python编写的代码,但是由于我在ArcGIS中应用代码所做的小改动不会起作用。
PGIS_TXT
是一列字符串,如下所示,第一个数字是一个包裹的分子,我想用Python表达式提取该字符串。
PGIS_TXT = ["31\c\u\n\2","22","1","134","23\c\u\n\1"]
import re
def getnumerator(PGIS_TXT):
if (len( PGIS_TXT ) > 3):
p=map(int, re.findall('\d+', PGIS_TXT ))
b=p[:-1]
return b
else:
b= int(PGIS_TXT)
return b
这些数字应存储在我的专栏flur_za
中:
flur_za = getnumerator(!PGIS_TXT!)
结果应为:
[31, 22, 1, 134, 23]
我收到标准错误"Error 999999"
和消息"The field is not nullable [flur_za]"
代码有什么问题?
答案 0 :(得分:0)
此代码对我有用:
def getnumerator(PGIS_TXT):
import re
if len(PGIS_TXT) > 3:
p = map(str, re.findall('\d+',PGIS_TXT))
z=p[:1]
b=int(''.join(z))
else:
if len(PGIS_TXT)==3:
b=int(PGIS_TXT[:3])
else:
if len(PGIS_TXT)==2:
b= int(PGIS_TXT[:2])
else:
if len(PGIS_TXT)==1:
b= int(PGIS_TXT[:1])
return b
我认为这个问题属于第一个if条件。我用map方法得到一个带整数值的列表,但我需要一个整数值。 .join方法有助于摆脱列表。