2016-11-09 3 views
1

Я выскабливание сайт, который имеет очень плохую структуру HTML, и я получаю текст как этотЗаменить только четные вхождения re.sub() - Python Regex

Пример:

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) ',' \\ 1 \\ 2 ', _str) – Skycc

+1

Проверьте это релевантное сообщение http://stackoverflow.com/a/1732454/131057 –

ответ

3

Вы должны попробовать что-то вроде замены:

: 
\r\r 

по :

+0

извините, объясните он с некоторым кодом – Umair

+0

Что вы хотите, когда у вас есть ':', удалите '\ r' after, если вы это сделаете:' re.sub ('[:] \ r +', ':', _ str) ' Это должно сделать это:

+0

Мне не понравилось, так что это должно изменить 'Name: \ r \ rMy_Name \ r \ r' на' Name: My_Name \ 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) 

(я хотел бы сделать это с поиском вперед, но здесь вы есть потреблять следующий рисунок)

Смежные вопросы