How to get the number of words in a text using python ?

Published: November 10, 2020

Tags: Python;

DMCA.com Protection Status

Example of how to count the number of words in a text file using python

Get the number of words in a text

Let's consider the following text (extracted from a wikipedia' article)

txt = "Le français est une langue indo-européenne de la famille des langues romanes. Le français s'est formé en France (variété de la « langue d'oïl », qui était la langue de la partie septentrionale du pays). Le français est déclaré langue officielle en France en 15395"

To get the number of words in the above text, a solution is to create a list of words using split():

list_of_words = txt.split()

print(list_of_words)

['Le', 'français', 'est', 'une', 'langue', 'indo-européenne', 'de', 'la', 'famille', 'des', 'langues', 'romanes.', 'Le', 'français', "s'est", 'formé', 'en', 'France', '(variété', 'de', 'la', '«', 'langue', "d'oïl", '»,', 'qui', 'était', 'la', 'langue', 'de', 'la', 'partie', 'septentrionale', 'du', 'pays).', 'Le', 'français', 'est', 'déclaré', 'langue', 'officielle', 'en', 'France', 'en', '15395']

and to apply len():

print("Number of words in text: ", len(list_of_words))

returns

Number of words in text:  45

Get the number of words in a text without repetitions

1: Remove special characters

To remove special characters a solution is to use isalnum():

list_of_words = [''.join(e for e in word if e.isalnum()) for word in list_of_words]

print(list_of_words)

returns

['Le', 'français', 'est', 'une', 'langue', 'indoeuropéenne', 'de', 'la', 'famille', 'des', 'langues', 'romanes', 'Le', 'français', 'sest', 'formé', 'en', 'France', 'variété', 'de', 'la', '', 'langue', 'doïl', '', 'qui', 'était', 'la', 'langue', 'de', 'la', 'partie', 'septentrionale', 'du', 'pays', 'Le', 'français', 'est', 'déclaré', 'langue', 'officielle', 'en', 'France', 'en', '15395']

2 - Remove empty elements ""

list_of_words = [word for word in list_of_words if word]

print(list_of_words)

3 - Remove duplicate using set():

list_of_words = list(set(list_of_words))

4 - Get the number of unique words

print("Number of words in text: ", len(list_of_words))

returns

Number of words in text:  27

References