检索空格之间的字符串

时间:2014-07-01 06:56:02

标签: python regex beautifulsoup whitespace

我有一个属于变量tbody的字符串,如下所示:

tbody = 
'...
</td>
<td class="Details clearfix">
<div>
<b>

9. I want this text and number

            </b>
</div>
</td>
<td class="flux">
...'

>print type(tbody)
<type 'str'>

正如您可能已经看到的那样,有空白。 我试图检索'9。我希望这个文本和数字'使用以下代码:

tbody2 = str(tbody.split(','))
tbody2 = str(re.split('\n|\r|\t', tbody2))
m = re.findall(re.compile("\\\\n(.+?)\\\\"), tbody2)
print m

这是我得到的结果:

[...'<td class="Details clearfix">', '<div>', '<b>',
'\\', '9. I want this text and number', '\\', '                </b>', '</div>',
'</td>', '<td class="flux>'...]

我无法获得字符串所以有没有办法检索它可能使用BS或正则表达式?干杯

2 个答案:

答案 0 :(得分:4)

from bs4 import BeautifulSoup

tbody = """
<td class="Details clearfix">
<div>
<b>

9. I want this text and number

            </b>
</div>
</td>

"""
soup = BeautifulSoup(tbody)
for item in soup.find_all('td',class_="Details clearfix"):
    print item.div.b.text.strip()

#output= 9. I want this text and number

我认为没有必要通过搜索美丽的汤来分割你获取预期的输出

答案 1 :(得分:0)

您可以使用DOTALL修饰符

通过Python的模块执行此操作
>>> import re
>>> m = re.search(r'<td.*?>.*?<b>\s*([^\n]*).*<\/b>.*?<\/td>', tbody, re.DOTALL)
>>> m.group(1)
'9. I want this text and number'

DEMO