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