我试图提取两个或更多单词的所有序列,每个单词的第一个字母都大写。我原以为这个'[A-Z][a-z]+(?=\s[A-Z])(?:\s[A-Z][a-z]+)+'
可以用,但它添加了一些我无法解释的字符。你知道吗
完整代码如下:
import re
import unittest
from bs4 import BeautifulSoup
html_page = """
<html>
<body>
<table>
<tr class=tb1><td>Lorem Ipsum dolor Sit amet</td></tr>
<tr class=tb1><td>Consectetuer adipiscing elit</td></tr>
<tr><td>Aliquam Tincidunt mauris eu Risus</td></tr>
<tr><td>Vestibulum Auctor Dapibus neque</td></tr>
</table>
</body>
</html>
"""
soup = BeautifulSoup(html_page)
text = soup.get_text()
def get_sequences(page):
ex = re.compile('[A-Z][a-z]+(?=\s[A-Z])(?:\s[A-Z][a-z]+)+')
sequences = re.findall(ex, page)
return sequences
print get_sequences(text)
期望的结果应该是
['Lorem Ipsum', 'Aliquam Tincidunt', 'Vestibulum Auctor Dapibus']
但是我却得到了
[u'Lorem Ipsum', u'Aliquam Tincidunt', u' Risus\nVestibulum Auctor Dapibus']
这种做法是正确的,但没有针对性。您要查找的是一行中两个或多个连续的大写单词。所以,应该在文本中的行上运行regex。这样做的诀窍:
Python代码:
结果:
见:http://ideone.com/iQev8D
您可以使用以下选项:
https://regex101.com/r/EeS7F5/1示例
您还可以修改当前的regex并去掉lookahead
视图https://regex101.com/r/vViHXm/1
相关问题 更多 >
编程相关推荐