2013-09-16 2 views
1
onclick="try{appendPropertyPosition(this,'B10016735','9176967671, 9176964646, 8939721171','44-22583703','Dealer','manesh');jsb9onUnloadTracking();jsevt.stopBubble(event);}catch(e){};" 

Нравится программа? Поделись с друзьями!Удалите ненужные значения - соскабливание с использованием beautifulsoup

Из приведенного выше атрибута onclick с помощью этого кода

join(re.findall("'([a-zA-Z0-9,\s]*)'", (a['onclick'] if a else ''))) 

Я выскабливание значения, как это:

B10016735,9176967671, 9176964646, 8939721171,44-22583703,Dealer,manesh 

Но я просто хочу, чтобы иметь один телефонный номер и удалить отдыха три номера телефона и должен выглядеть следующим образом:

B10016735,9176967671,Dealer,manesh 

Обновление

Вещь, следующий шаблон не повторяется для всех строк на странице HTML . Несколько строк имеют три phonenos, у немногих два. и иногда нулевые номера телефонов. Таким образом, число телефонных номеров меняется.

B10016735,9176967671, 9176964646, 8939721171,44-22583703, дилер, Manesh

+0

beatifulSoup4 права? –

+0

есть. Я использую BS4. –

ответ

2

Учитывая строку

In [101]: text = 'B10016735,9176967671, 9176964646, 8939721171,44-22583703,Dealer,manesh' 

Вы можете разделить text на куски:

In [102]: items = [item.strip() for item in text.split(',')] 

Выберите первые два пункта и два последних пункта с:

In [103]: items[:2]+items[-2:] 
Out[103]: ['B10016735', '9176967671', 'Dealer', 'manesh'] 

и сформировать нужную строку:

In [104]: ','.join(items[:2]+items[-2:]) 
Out[104]: 'B10016735,9176967671,Dealer,manesh' 
1
>>> import re 
>>> strs = 'B10016735,9176967671, 9176964646, 8939721171,44-22583703,Dealer,manesh' 
>>> re.sub(r'([^,]+,[^,]+,)(.*?)([A-Za-z].*)', r'\1\3', strs) 
'B10016735,9176967671,Dealer,manesh' 
+0

Обновлен вопрос. –

+0

@ Venky Итак, решение не работает ни для одного из случаев? –

+0

Нет. Он снимает все номера телефонов. и дает 'B10016735,, Дилер, manesh'. Не могли бы вы увидеть, что такое вся моя продукция? –

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