为了账号安全,请及时绑定邮箱和手机立即绑定

Scrapy正则表达式怎么去掉空格和换行符?

Scrapy正则表达式怎么去掉空格和换行符?

开满天机 2019-02-20 12:13:08
HTML: <html> <head> <base href='http://example.com/' /> <title>Example website</title> </head> <body> <div id='demo'> <div> &nbsp;&nbsp;&nbsp;&nbsp;美国国家航空航天局(NASA)与英国著名物理学家霍金携手,将共同打造微型星际飞船“纳米飞行器”。\r\n该飞行器将以五分之一光速飞行,并用<span>20</span>年时间飞到距太阳系最近的恒星之一比邻星,帮助人类尽早找到下一个适合居住的星体。 </div> </div> </body> </html> 获取整段文字可以这样写: In:response.xpath('string(//div[@id="demo"]/div)').extract_first() Out: u'\r\n\t\t\t\t    美国国家航空航天局(NASA)与英国著名物理学家霍金携手,将共同打造微型星际飞船“纳米飞行器”。\r\n该飞行器将以五分之一光速飞行,并用20年时间飞到距太阳系最近的恒星之一比邻星,帮助人类尽早找到下一个适合居住的星体。' 我想把输出结果里面的空格和换行符去掉,后面加一个re()函数: In:response.xpath('//div[@id="demo"]/div/text()').re(r'') 问题:上面re()函数中的正则表达式该怎么写?
查看完整描述

2 回答

?
米脂

TA贡献1836条经验 获得超3个赞

可以用re.sub 函数进行以正则替换,
sub(pattern, repl, string, count=0)

  • 第一个参数:规则

  • 第二个参数:替换后的字符串

  • 第三个参数:字符串

  • 第四个参数:替换个数。默认为0,表示每个匹配项都替换

>>> a="\t\t\n 123"
>>> a
'\t\t\n 123'
>>> b = re.sub(r'\s+','', a) #\s   匹配任意的空白符
>>> b
'123'
查看完整回答
反对 回复 2019-03-04
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

.re(r'S+')

注意是大写的S

s -- (小写 s) 匹配单个空白字符 -- 空格,换行,返回,tab 形式为[ nrtf]. S (大写 S) 匹配任意的非空白字符的字符

查看完整回答
反对 回复 2019-03-04
  • 2 回答
  • 0 关注
  • 1759 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信