-1

美丽的汤似乎对包含括号的字符串有问题,如果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>
4

1 回答 1

1

在 regex()中是特殊字符。你需要逃离他们。

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
于 2013-08-23T20:13:58.367 回答