当使用re.split()
时我知道如何在分割结果中保留分隔符,是使用 ()
捕获组。
但我有一个问题,这是我的正则表达式 (<br>*\s*[a-z]+)
这是字符串
Attribute Information:</b><br>Listing of attributes:<br>>50K, <br>age: continuous.<br>workclass: Private, Self-emp-not-inc, Self-emp-inc, Federal-gov, Local-gov, State-gov, Without-pay, Never-worked.<br>fnlwgt: continuous.
split返回的结果为
[u'<br>age', u': continuous.\r', u'<br>workclass', u': Private, Self-emp-not-inc, Self-emp-inc, Federal-gov, Local-gov, State-gov, Without-pay, Never-worked.\r', u'<br>fnlwgt', u': continuous.\r']
意味着这两个都在不同的索引上 [u'<br>age', u': continuous.\r']
我希望它们位于相同的索引 [u'<br>age: continuous.\r'
上
编辑
实际上我正在抓取这部分
来自此网址http://archive.ics.uci.edu/ml/datasets/Adult
我想得到 age: continuous.
和fnlwgt: continuous.
所有这些都在列表内的单独元素中
最佳答案
您似乎想在 <br>
上进行拆分后跟 0 个以上空格和 1 个以上字母或连字符。
您需要将模式的一部分转变为非消耗子模式,积极的前瞻:
r'<br>(?=\s*[A-Za-z-]+:)'
^^^^^^^^^^^^^^^^^
请参阅regex demo
一个(?=\s*[a-zA-Z-]+:)
,是zero-width assertion ,不消耗(=将文本放入匹配中) <br>
之后的子字符串满足 \s*[a-z-]+:
模式,但要求它出现在那里。
关于python - 如何将 re.split 中的分隔符保留在返回列表的同一索引上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41098782/