2016-11-09 20 views
1

我刮網站,該網站具有真正的窮人HTML結構和我得到的文本這樣只更換出現連的應用re.sub() - Python的正則表達式

例子:

Creator: 
\r\r 
My Name 
\r\r 
Date created: 
\r\r 
123123 
<br><br> 
Title: 
\r\r 
Title here 
\r\r 

我想它看起來像

Creator: My Name 
\r\r 
Date created:123123 
Title:Title here 
\r\r 

我有這樣的正則表達式_str = re.sub('\r+','',_str)但我知道它錯了,因爲它取代所有\r

有沒有什麼辦法可以迭代re.sub()?或者你有任何想法,我怎樣才能實現我的目標?

+0

嘗試_STR =應用re.sub('([^ \ R] +)\ r \ r([^ \ r] + \ r \ r)','\\ 1 \\ 2',_str) – Skycc

+1

檢查相關文章http://stackoverflow.com/a/1732454/131057 –

回答

3

你應該嘗試像更換:

: 
\r\r 

通過:

+0

對不起,解釋它與一些代碼 – Umair

+0

你想要的是當你有一個':',刪除'\ r'後,如果你這樣做:'re.sub('[:] \ r +',':',_ str)'這應該這樣做:

+0

我失敗對不起,所以應該改變'姓名:\ r \ rMy_Name \ r \ r'爲'名稱:我的名字\ r \ r' –

1

是否必須是正則表達式?

s1 = 'Creator:\r\rMy Name\r\rDate created:\r\r123123<br><br>Title:\r\rTitle here\r\r' 
s2 = ''.join(l + '\r\r' * (n % 3 == 1) for n, l in enumerate(s1.split('\r\r'))) 
// s2 == 'Creator:My Name\r\rDate created:123123<br><br>Title:Title here\r\r' 
2

可以僅由第二部分替換\r\r圖案+下一組(包括下一個\r\r圖案)。

re.sub('\r+([^\r]+\r+)',r'\1',_str) 

(我本來希望與正向查找做到這一點,但在這裏,你消耗以下模式)