Arcmap字段计算器Python sPrefix

2024-03-29 06:26:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有一套价值观如下:

"addr:city"="Bielefeld","addrostcode"="33699","addr:street"="Westerkamp" "addr:city"="Bielefeld","addr:street"="Detmolder Straße" "addr:city"="Bielefeld","addr:housenumber"="34"

我想把它们提取成单独的属性。在

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

dim city

if sPrefix = "addr:city": return everything past "addr:city" until a comma appears

怎么解决这个问题。不幸的是,我没有多少经验。在

谢谢

乌利!在

这是一张截图

screenshot


Tags: 代码streetcity属性计算器addrdim价值观
3条回答

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

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'

当我读到您的问题时,您需要将一个看起来像'"addr:city"="Bielefeld","addr:housenumber"="34"'的字符串提取到单个(key,value)对中。最简单的方法是使用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

看看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

相关问题 更多 >