Найти количество уникальных слов в тегах абзаца с помощью Beautifulsoup - PullRequest
0 голосов
/ 27 февраля 2020

Я очень новичок в python. Я пытаюсь реализовать функцию, которая выводит количество уникальных слов внутри тегов абзаца, но после редактирования этого текста несколькими способами. Первый: извлечь весь текст, заключенный в теги абзаца, и преобразовать его в нижний регистр. Второй: убрать знаки препинания, для которых я использую str.translate(str.maketrans('','',string.punctuation)) Третий: разбить на слова на основе разделения пробелов. В-четвертых: выведите количество уникальных слов.

Вот мой код:

import urllib
def getLength(url):
    r=urllib.request.urlopen(url).read()
    soup = BeautifulSoup(r, 'html.parser')
    links = soup.find_all('p')
    k=[]
    for p in links:
        if not p.find('a'):
            pText = p.get_text()
            k=k.append(pText)
        k=k.lower()
        translator=str.translate(str.maketrans('','',string.punctuation))
        k=k.translate(translator)
    #missing code
getLength("https://en.wikipedia.org/wiki/Google")

Я попытался напечатать значения и обнаружил, что мои логики c неверны. Я не знаю, как это исправить и продолжить. Пожалуйста, помогите.

edit:

import urllib
def getLength(url):
    r=urllib.request.urlopen(url).read()
    soup = BeautifulSoup(r, 'html.parser')
    links = soup.find_all('p')
    for p in links:
        pText = p.get_text()
        pText=pText.lower()
        transpText=pText.translate(pText.maketrans('','',string.punctuation))
        print(transpText)
        newdata=transpText.split()
        length=len(newdata)
        return length
getLength("https://en.wikipedia.org/wiki/Google")

Я получил это, но я не понял часть токенизации. И по какой-то причине я получаю 0 в качестве длины. Что я сделал не так или как это должно быть сделано.

1 Ответ

0 голосов
/ 27 февраля 2020
import numpy as np
import urllib
def getLength(url):
    r=urllib.request.urlopen(url).read()
    soup = BeautifulSoup(r, 'html.parser')
    links = soup.find_all('p')
    k=[]
for p in links:
    pText = p.get_text()
    pText=pText.lower()
    transpText=pText.translate(pText.maketrans('','',string.punctuation))
    newdata=transpText.split()
    k += newdata
n=np.unique(k)
return len(n)
getLength("https://en.wikipedia.org/wiki/Google")

После многократных попыток ... я получил этот код, и, похоже, он работает правильно для различных тестовых случаев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...