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

查看:443
本文介绍了python - Scrapy正则表达式怎么去掉空格和换行符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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()函数中的正则表达式该怎么写?

解决方案

可以用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'

这篇关于python - Scrapy正则表达式怎么去掉空格和换行符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆