Arcmap字段计算器Python sPrefix

时间:2012-11-01 13:11:31

标签: python prefix arcmap

我正在使用字段计算器在Arcmap中工作。

我对以下的价值观有一点兴趣:

  

“地址:城市”= “比勒费尔德”, “addrostcode”= “33699”, “地址:街道”= “Westerkamp酒店”   “addr:city”=“Bielefeld”,“addr:street”=“DetmolderStraße”   “地址:城市”= “比勒费尔德”, “地址:housenumber”= “34”

我想将它们提取为单独的属性。

所以我认为我需要代码:

  昏暗的城市

     

如果sPrefix =“addr:city”:       将所有内容返回“addr:city”直到逗号出现

任何想法如何解决这个问题。我没有太多经验,不幸的是。

谢谢,

乌利!

这是截图

screenshot

3 个答案:

答案 0 :(得分:1)

看一下python的csv模块。

修改

我从未使用过Arcmap,但我想你仍然可以在其中导入模块。 如果字符串非常规则,你可以在没有它的情况下解析数据:

例如

#test.py

def func(s, srch):
    parts = dict([item.replace('"','').split('=') for item in s.split(',')])
    return parts.get(srch,'')

if __name__ == '__main__':
    tags = '"addr:city"="Bielefeld","addrostcode"="33699","addr:street"="Westerkamp"'
    print func(tags, 'addr:city')

>python test.py
>Bielefeld

答案 1 :(得分:0)

这样的事情,定义你自己的功能:

In [40]: def func(x,item):
    spl=strs.split(",")
    for y in spl:
        if item in y:
            return y.split("=")[-1].strip('"')

   ....:         
   ....:         

In [53]: strs='"addr:city"="Bielefeld","addrostcode"="33699","addr:street"="Westerkamp"'

In [54]: func(strs,"addr:city")
Out[54]: 'Bielefeld'

In [55]: func(strs,"addr:street")
Out[55]: 'Westerkamp'

答案 2 :(得分:0)

在我阅读您的问题时,您希望将一个看起来像'"addr:city"="Bielefeld","addr:housenumber"="34"'的字符串提取到单个(键,值)对中。最简单的方法是使用csv阅读器(http://docs.python.org/2/library/csv.html)。您需要确定如何在您的用例中使用它,但这是一个可能有用的通用示例:

import csv
for pairs in csv.reader(attribute_list):
    key, value = pair.split('"="')
    print key, value