我将“company \ data \ 2012 \ name”输入到变量。
我在该变量中获得“company \dataü2\ name”。
我想在该变量中使用“company \ data \ 2012 \ name”。
我使用arcpy作为esri的arcmap python脚本的一部分,使用地理处理工具箱,我认为如果对任何人都有意义的话,我会处理输入的字符串文字部分。
帮助!
答案 0 :(得分:3)
您希望在字符串中包含文字反斜杠。反斜杠用作Python字符串中的转义字符,因此要包含需要执行以下操作之一的文字反斜杠:
"data\\2012"
r"data\2012"
使用"data\2012"
,"\201"
实际上被解释为八进制转义符,因此转义序列被转换为单个字符。基数8中的值201在基数10中为129或以十六进制为0x81。如果您在显示“ü”时看到“ü”,则必须使用使用CP437或类似编解码器的Windows控制台。
答案 1 :(得分:-1)
数字仍然存在,它只是在字符串中。 这可能不会让你100%的方式,但它应该是接近。 基本上,你需要确定你不想“解码”的有效字符集,然后像这样翻译其余字符:
# Original escaped the \n correctly?? but not the \201....
testdata = "company\data\2012\\name"
print testdata
company\dataü2\name
corrected = ''.join([x if (x.isalnum() or x in '/.\\') else '\\%s'%(oct(ord(x))[1:]) for x in testdata])
print corrected
您可能需要添加到已识别的标点符号列表中,和/或限制其识别的数字范围。
但是,你真的需要在源头修复它......这对以下内容没有帮助:
testdata = 'company\data\015\\name'
print testdata
\nameny\data
或更糟
testdata = 'company\data\102\\name'
print testdata
company\dataB\name
我必须知道我应该翻译一个角色才能使其发挥作用。 \201
有效,因为它不是预期的字符。第一个可能没问题 - 我们也不希望回车。但我怎么知道转换B?它是一个有效的字母字符,我不能将它与其他真实文本区分开来。
所以,这确实需要在上游解决。