我有这个字符串来自BeautifulSoup:
<span class="move-text-component vertical-move-list-clickable"><!-- -->
abc6
<!-- --> <!-- --></span>
我如何提取abc6文本,知道它可以是任何带有2-6个字符/数字/连字符的子字符串(两个字符都大写且没有大写),并且我认为它前后总是有换行符在这里。
如何使用您认为合适的任何方法来执行此操作? (正则表达式,Beautifulsoup等)
编辑:这是打印为列表以显示\ n个字符的确切字符串:
['<span class="move-text-component vertical-move-list-clickable"><!-- -->\n\n d4\n\n <!-- --> <!-- --></span>']
答案 0 :(得分:2)
您可以使用正则表达式执行此操作:
<.+>\n\n(.+)\n\n<.+>
并提取()中的组
在Python中,您必须像这样编写它:
import re
re.search(".+\n\n(.+)\n\n.+", text).group(1)
.
与任何字符匹配
+
匹配一次且无限制次数
()
将选择组
最后的.group(1)
将进行()
答案 1 :(得分:2)
除了BeautifulSoup,您不需要其他工具。只需使用.text.strip():)
from bs4 import BeautifulSoup
source = """
<span class="move-text-component vertical-move-list-clickable"><!-- -->\n\n d4\n\n <!-- --> <!-- --></span>
"""
soup = BeautifulSoup(source, 'lxml')
data = soup.find('span', class_ ="move-text-component vertical-move-list-clickable")
print(data.text.strip())
结果