正则表达式匹配“\xa0”的问题

在scrapy中使用正则表达式匹配“xa0”的问题:

html是这样的

<div>数量:100-200个&nbsp;&nbsp;&nbsp;&nbsp;</div>

要取出100-200个,其他不要。

解析:

response.xpath('/html/body/div/text()').re_first('数量:(.+)\s$')

解析结果是:

100-200个\xa0\xa0\xa0

xa0对应html中的&nbsp,html中有4个&nbsp,解析结果有3个xa0,怎么修改正则表达式可以去掉解析结果的3个xa0

阅读 9.4k
3 个回答

用strip()去掉首尾空格

from scrapy.selector import Selector

content = "<div>数量:100-200个&nbsp;&nbsp;&nbsp;&nbsp;</div>"
strings = Selector(text=content).xpath('//div/text()').re_first(u'数量:(.+)\s$').strip()
print(strings)
print(len(strings))
"""
100-200个
8
"""
新手上路,请多包涵

两种方法:
string = '100-200个xa0xa0xa0'
第一种:
out = "".join(string.split())
第二种
import re
pattern = re.compile(r'xa0')
out = re.sub(pattern, ' ', string)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题