美丽的汤 - 字符串括号问题?

时间:2013-08-23 20:04:23

标签: beautifulsoup

漂亮的汤似乎对包含括号的字符串有问题,如果Ethernet LAN (RJ-45}作为关键字输入,则以下代码将失败,但如果我只输入Ethernet LAN

,则会成功

有没有人知道为什么会这样,有什么特别的东西可以添加到我的代码中以使其与括号一起使用,因为我需要一个完美的匹配?

代码

pattern = re.compile(r'\s*%s\s*' % 'Ethernet LAN (RJ-45) ports quantity')
rj45_ports = soup.find(text=pattern).findNext('div',{'class':'ds_data'}).text
print rj45_ports

HTML

<div class="tableRow">
<div class="ds_label">
<span class=""> Ethernet LAN (RJ-45) ports quantity</span>
<span class="red line">
</div>
<div class="ds_data"> 1 </div>
</div>

1 个答案:

答案 0 :(得分:1)

在正则表达式()中是特殊字符。你需要逃脱它们。

pattern = re.compile(r'\s*%s\s*' % 'Ethernet LAN \(RJ-45\) ports quantity')

编写一个处理字符串清理的函数可能是值得的。

def sanitize(s):
    out = s
    # Fill this up with whatever additional meta characters you need to escape
    for meta_char in ['(', ')']:
        out = out.replace(meta_char, '\\'+meta_char)
    return out