HTML:
<html>
<head>
<base href='http://example.com/' />
<title>Example website</title>
</head>
<body>
<div id='demo'>
<div>
美国国家航空航天局(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'
翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
.re(r'S+')
注意是大写的S
s -- (小写 s) 匹配单个空白字符 -- 空格,换行,返回,tab 形式为[ nrtf]. S (大写 S) 匹配任意的非空白字符的字符
添加回答
举报
0/150
提交
取消