漂亮的汤似乎对包含括号的字符串有问题,如果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>
答案 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