come scoprire se la stringa è nel dizionario [duplicato]

Aug 28 2020

Voglio sapere se una parola è nel dizionario.

Ecco cosa sto provando.

import requests

def word_in_dictionary(word):
    response = requests.get('https://en.wiktionary.org/wiki/'+word)
    return response.status_code==200

print(word_in_dictionary('potato')) # True
print(word_in_dictionary('nobblebog')) # False

Ma sfortunatamente il dizionario contiene molte parole che non sono inglesi e non voglio eguagliarle.

print(word_in_dictionary('bardzo')) # WANT THIS TO BE FALSE

Quindi ho provato a guardare nel contenuto.

def word_in_dictionary(word):
    response = requests.get('https://en.wiktionary.org/wiki/'+word)
    return response.status_code==200 and 'English' in response.content.decode()

Ma sto ancora diventando Vero. Sta trovando "inglese" da qualche parte nel sorgente della pagina anche se la pagina sottoposta a rendering non ce l'ha (niente quando cerco con ctrl-F nel browser).

Come posso fare in modo che restituisca True solo se è effettivamente elencato come avente un significato in inglese?

Risposte

5 AndrejKesely Aug 28 2020 at 18:10

Guardando il codice HTML, se la parola è inglese, c'è un tag con id="English". Puoi provare questo codice:

import requests
from bs4 import BeautifulSoup


def word_in_dictionary(word):
    response = requests.get('https://en.wiktionary.org/wiki/'+word)
    return response.status_code==200 and bool(BeautifulSoup(response.content, 'html.parser').select_one('#English'))

print(word_in_dictionary('potato')) # True
print(word_in_dictionary('nobblebog')) # False
print(word_in_dictionary('bardzo')) # False