提取来自beautifulsoup的一部分字符串

时间:2019-01-13 14:41:44

标签: python regex python-3.x string

我有这个字符串来自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>']

2 个答案:

答案 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())

结果

enter image description here