python - 如何将 re.split 中的分隔符保留在返回列表的同一索引上

标签 python regex

当使用re.split()时我知道如何在分割结果中保留分隔符,是使用 ()捕获组。

但我有一个问题,这是我的正则表达式 (<br>*\s*[a-z]+)这是字符串

Attribute Information:</b><br>Listing of attributes:<br>&gt;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'

编辑

实际上我正在抓取这部分 enter image description here 来自此网址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/

相关文章:

python - 使用 raw_input() 时,在 bash 中使用 > 保存 Python 脚本的输出

java - 使用正则表达式提取字符串

regex - 如何捕获haskell正则表达式中的字符串?

python - 如何在Python中使用正则表达式提取字符串

正则表达式匹配以 x 开头、以 y 结尾并包含 z 但中间不包含 x 的多行字符串

python - 如何在 FacetGrid 中不共享轴

python - 无法在 rospy 中发布订阅的主题

python - 从每月索引 Python 返回一列 'days in month'

python - 安装 pip 在 python < 3.6 中不起作用

python - 匹配冒号前后的短语