一尘不染

Python:按特定模式拆分

python

我有以下

str = '[5.955894, 45.817792], [10.49238, 45.817792], [10.49238, 47.808381], [5.955894, 47.808381]'

我想将其拆分,以便我有一个字符串数组,例如

['[5.955894, 45.817792]', '[10.49238, 45.817792]', ...]

以便对象是数组的元素。重要的是包含封闭的[和]。我到目前为止:

re.split('\D,\s\D', str)

但这给了我:

['[5.955894, 45.817792', '10.49238, 45.817792', '10.49238, 47.808381', '5.955894, 47.808381]']

并不是我真正想要的。


阅读 206

收藏
2021-01-20

共1个答案

一尘不染

我更喜欢使用re.findall并指定我 想要的内容, 而不是尝试描述以下内容的分隔符re.split

>>> s = '[5.955894, 45.817792], [10.49238, 45.817792], [10.49238, 47.808381], [5.955894, 47.808381]'
>>> re.findall(r"\[[^\]]*\]",s)
['[5.955894, 45.817792]', '[10.49238, 45.817792]', '[10.49238, 47.808381]', '[5.955894, 47.808381]']
  1. \[ 火柴 [
  2. [^\]]* 匹配任何东西,但]
  3. \] 火柴 ]
2021-01-20