Как заменить все строки в Python?

0

Я создаю скребок с прокси-сервером, используя настройки регулятора. Анализ Html с re ужасен, поэтому мне нужно убедиться, что в конечном итоге строки не появятся. Как заменить все строки пробелом. Текущий код, который я должен был очистить проанализированные данные, был

print title.replace(',', '').replace("!", '').replace(":", '').replace(";", '').replace(str, '') 

Часть str была тем, что я пробовал... это не сработало. Любые другие методы?

  • 4
    Обязательный Используйте HTML-библиотеку разбора, например BeautifulSoup.
  • 1
    «Разбор HTML с re ужасен» - регулярные выражения никогда не предназначались для анализа HTML; и HTML не предназначен для анализа регулярными выражениями для начала.
Показать ещё 12 комментариев
Теги:
string
parsing

2 ответа

1
Лучший ответ
replace1 = range(0,46)+range(58,127)+[47] #Makes a list of all the 
#ASCII characters  values that you don't want it to show,
#http://www.asciitable.com/, this includes all the letters,
#and excludes all numbers and '.'

text = '<html><body><p>127.0.0.1</p></body></html>' #Test data.
tmp = '' 

for i in range(len(text)-1): #this goes through each character in the text
...     if not ord(text[i]) in replace1: #checks if that character 
#ASCII value is in not the list of 'Blacklisted' ASCII values, 
#then appends it to the tmp variable 
...             tmp += text[i]

print tmp
127.0.0.1
  • 0
    это был бы лучший ответ, если бы вы объяснили, почему это работает
3

Если вы хотите извлечь все видимые числа из документа HTML, вы можете сначала использовать BeautifulSoup для анализа HTML-документа и извлечь из него текст. И после этого вы можете извлечь все числа из этих текстовых элементов:

from bs4 import BeautifulSoup
from urllib.request import urlopen
import re

# lets use the StackOverflow homepage as an example
r = urlopen('http://stackoverflow.com')
soup = BeautifulSoup(r)

# As we dont want to get the content from script related
# elements, remove those.
for script in soup(['script', 'noscript']):
    script.extract()

# And now extract the numbers using regular expressions from
# all text nodes we can find in the (remaining) document.
numbers = [n for t in soup(text=True) for n in re.findall('\d+', t)]

numbers будут содержать все числа, которые были видны в документе. Если вы хотите ограничить поиск только определенными элементами, вы можете изменить часть soup(text=True).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню