0

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

我的价值观如下:

"addr:city"="Bielefeld","addrostcode"="33699","addr:street"="Westerkamp" "addr:city"="Bielefeld","addr:street"="Detmolder Straße" "addr:城市"="比勒费尔德","地址:housenumber"="34"

我想将它们提取到单个属性中。

所以我想我需要这样的代码:

昏暗的城市

if sPrefix = "addr:city": 返回 "addr:city" 之后的所有内容,直到出现逗号

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

谢谢,

乌里!

这是一个截图

截屏

4

3 回答 3

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
于 2012-11-01T13:17:07.250 回答
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'
于 2012-11-01T13:19:10.597 回答
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
于 2012-11-01T13:20:03.117 回答