HTML:
<html>
<head>
<base />
<title>Example website</title>
</head>
<body>
<div id='demo'>
<div>
美國(guó)國(guó)家航空航天局(NASA)與英國(guó)著名物理學(xué)家霍金攜手,將共同打造微型星際飛船“納米飛行器”。\r\n該飛行器將以五分之一光速飛行,并用<span>20</span>年時(shí)間飛到距太陽(yáng)系最近的恒星之一比鄰星,幫助人類盡早找到下一個(gè)適合居住的星體。
</div>
</div>
</body>
</html>
獲取整段文字可以這樣寫:
In:response.xpath('string(//div[@id="demo"]/div)').extract_first()
Out: u'\r\n\t\t\t\t????美國(guó)國(guó)家航空航天局(NASA)與英國(guó)著名物理學(xué)家霍金攜手,將共同打造微型星際飛船“納米飛行器”。\r\n該飛行器將以五分之一光速飛行,并用20年時(shí)間飛到距太陽(yáng)系最近的恒星之一比鄰星,幫助人類盡早找到下一個(gè)適合居住的星體。'
我想把輸出結(jié)果里面的空格和換行符去掉,后面加一個(gè)re()函數(shù):
In:response.xpath('//div[@id="demo"]/div/text()').re(r'')
問(wèn)題:上面re()函數(shù)中的正則表達(dá)式該怎么寫?
2 回答

米脂
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
可以用re.sub 函數(shù)進(jìn)行以正則替換,
sub(pattern, repl, string, count=0)
第一個(gè)參數(shù):規(guī)則
第二個(gè)參數(shù):替換后的字符串
第三個(gè)參數(shù):字符串
第四個(gè)參數(shù):替換個(gè)數(shù)。默認(rèn)為0,表示每個(gè)匹配項(xiàng)都替換
>>> a="\t\t\n 123"
>>> a
'\t\t\n 123'
>>> b = re.sub(r'\s+','', a) #\s 匹配任意的空白符
>>> b
'123'

翻翻過(guò)去那場(chǎng)雪
TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
.re(r'S+')
注意是大寫的S
s -- (小寫 s) 匹配單個(gè)空白字符 -- 空格,換行,返回,tab 形式為[ nrtf]. S (大寫 S) 匹配任意的非空白字符的字符
添加回答
舉報(bào)
0/150
提交
取消