使用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.
分割返回的结果是
[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.
以及所有这些内容放在列表中的单独元素中
答案 0 :(得分:2)
似乎你想要在<br>
上拆分,然后是0 +空格和1+个字母或连字符。
您需要将模式的一部分转换为非消费子模式,正向前瞻:
r'<br>(?=\s*[A-Za-z-]+:)'
^^^^^^^^^^^^^^^^^
请参阅regex demo
作为zero-width assertion的(?=\s*[a-zA-Z-]+:)
不会消费(=将文字放入匹配项)<br>
符合\s*[a-z-]+:
模式的子字符串,但需要它出现在那里。
答案 1 :(得分:1)