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

开满天机
浏览 1760回答 2
2回答

米脂

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

翻翻过去那场雪

.re(r'S+') 注意是大写的S s -- (小写 s) 匹配单个空白字符 -- 空格,换行,返回,tab 形式为[ nrtf]. S (大写 S) 匹配任意的非空白字符的字符
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python