gpt4 book ai didi

python - 从字符串中提取坐标

转载 作者:行者123 更新时间:2023-11-28 22:18:39 34 4
gpt4 key购买 nike

请考虑以下内容:“MULTILINESTRING((10 10,10 40),(40 40,30 30,40 20,30 10))”
我想将其转换为:[[10,10],[10,40],[40,40],[30,30],[40,20],[30,10]]

我的解决方案
我使用函数 split()replace() 来格式化它。我得到了一些脏代码,可能不是最有效的代码,比如 my_str.split('((')[1].split('))')[1]...etc

因为我在一个巨大的数据集上执行此操作,所以我正在寻找一种有效的方法来执行此操作。

最佳答案

如果您正在寻找不会做太多事情的干净代码,我建议您使用包含 re 模块的两步过程 —

  1. 使用 str.split
  2. 在逗号上将您的字符串拆分成更小的 block
  3. 对于每个 block ,使用re.findall提取坐标

为了提高性能,我建议使用 re.compile 预编译正则表达式模式,因为我们会在循环中重复调用它。

>>> import re
>>> p = re.compile(r'\d+(?:\.\d+)?')
>>> [list(map(int, p.findall(x)) for x in mstring.split(',')]
[[10, 10], [10, 40], [40, 40], [30, 30], [40, 20], [30, 10]]

请注意,mstring 是您的字符串数据。


详情

\d+    # match one or more digits
(?: # specify non-capturing group
\. # literal period/decimal
\d+
)? # optional

在语义上,这个正则表达式将匹配整数或 float (Ajax1234 的解决方案目前只考虑整数,并且保证在更少的周期内完成搜索)。

关于python - 从字符串中提取坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50360643/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com