我正在使用字段计算器在Arcmap中工作。
我对以下的价值观有一点兴趣:
“地址:城市”= “比勒费尔德”, “addrostcode”= “33699”, “地址:街道”= “Westerkamp酒店” “addr:city”=“Bielefeld”,“addr:street”=“DetmolderStraße” “地址:城市”= “比勒费尔德”, “地址:housenumber”= “34”
我想将它们提取为单独的属性。
所以我认为我需要代码:
昏暗的城市如果sPrefix =“addr:city”: 将所有内容返回“addr:city”直到逗号出现
任何想法如何解决这个问题。我没有太多经验,不幸的是。
谢谢,
乌利!
这是截图
答案 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