我正在尝试使用字段计算器(ArcMap 10.0)去除地址字段中的双引号(相信我,我没有把它们放在其中)。我尝试了许多咒语,但仍然无法通过计算开始。是的,两个字段均为字符串,且长度均可接受。
此计算:
结果:
在“结果”对话框中显示以下错误消息:
我再说一遍,我没有把它们放在那里。
我正在尝试使用字段计算器(ArcMap 10.0)去除地址字段中的双引号(相信我,我没有把它们放在其中)。我尝试了许多咒语,但仍然无法通过计算开始。是的,两个字段均为字符串,且长度均可接受。
此计算:
结果:
在“结果”对话框中显示以下错误消息:
我再说一遍,我没有把它们放在那里。
Answers:
我发现在10.0中,Field Calculator很奇怪。
但是我设法使它起作用。主要思想是用单引号将字段名称引起来。
例。假设我们有字段text1
和text2
。与其尝试text2
使用expression 计算字段,!text1!
否则可能会失败,请尝试以下操作:'!text1'
。如您所见,我在这里使用单引号。
因此,回到您的任务。使用Pre-Logic脚本代码将更加清楚:
def calc(value):
return value.replace('"', '')
表达式将是:
calc('!text1!')
希望它对您有用。
我没有做进一步的实验,但是我认为发生这种奇怪的行为是因为将字段计算转换为对ArcToolbox工具的调用,CalculateField_management
并且将表达式作为参数提供给它(可能另外用单引号或双引号引起来)。
更新:
如果field的值中有单引号,我的先前解决方案将失败text1
。
现在,即使在attribute的任何值中都有char '
和"
(单引号和双引号)的情况下,我也设法使其工作text1
。
这是表达式,它将返回原始字符串,同时支持两种引号:
'''!text1!'''[1:-1]
对于您的任务,它可以扩展为(没有预逻辑脚本代码):
'''!text1!'''[1:-1].replace('"', '')
'!testing!'
如果您使用的是版本10.1,并且确定要摆脱双引号的每个实例,则可以使用:
!testing!.replace("\"","")
如果有人知道为什么它在10.1而不是10.0中起作用,我会感兴趣。
这是我跑步的结果条目。
这是一种非脚本方式。
"
,选择“全部替换”(您必须单击两次“全部替换”按钮)。我没有在Arc内尝试过此操作,但是我能够以这种(快速)方式从Python IDE中的字符串中删除双引号:
aStr ='"test"'
a1 = aStr.lstrip('"')
a2 = a1.rstrip('"')
print a2
a2打印测试,不带引号。
!testing![1:len(!testing!)-1]