ArcGIS字段计算器中的语法错误

时间:2014-08-22 11:31:06

标签: python arcgis arcpy

我在ArcGIS中创建了一个小脚本,用于创建超链接。

我的代码:

def Befahrung(value1, value2):
    if value1 is '':
        return ''
    else:
        return "G:\\Example\\" + str(value1) + "\\File_" + str(value2) + ".pdf"

错误(仅当!Bezeichnun!包含特殊字符时):

ERROR 000539: Error running expression: Befahrung(u" ",u"1155Mönch1")
Traceback (most recent call last):
  File "<expression>", line 1 in <module>
  File "<string>", line 5 in Befahrung
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 5: ordinal not in range(128)

!Bezeichnun!!Auftrag!都是字符串。它很有效,直到!Bezeichnun!包含特殊字符。我不能改变角色,我需要保存它们。

我需要改变什么?

2 个答案:

答案 0 :(得分:2)

Befahrung中,您将字符串(在本例中为Unicode)转换为ASCII:

str(value1);
str(value2);
如果value1value2包含非ASCII字符,则

无效。你想用

unicode(value1)

或更好,使用字符串格式:

return u"G:\\Example\\{}\\File_{}.pdf".format(value1, value2)

(适用于Python 2.7及以上版本)

答案 1 :(得分:2)

我建议您阅读Python Unicode HOWTO。错误可以提炼为

>>> str(u"1155Mönch1")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 5: ordinal not in range(128)

如果你知道你需要什么字符编码(例如,UTF-8),你可以像

那样编码
value1.encode('utf-8')