Python Word Count Script Example

This example shows a simple way to count words in Python.

You will build a small script that:

  • takes a piece of text
  • splits it into words with split()
  • counts those words with len()

This is a beginner-friendly example focused on one practical task. It does not try to do advanced text analysis.

Quick example #

text = "Python makes word counting simple"
words = text.split()
count = len(words)

print("Word count:", count)

Output:

Word count: 5

This is the simplest version. It splits text by spaces and counts the resulting words.

What this example does #

This script:

  • shows how to count words in a short string
  • uses split() to break text into words
  • uses len() to count how many words were found
  • targets beginners who want a small practical script

Basic word count example #

Start with a plain text string, split it, and count the result.

text = "Python makes word counting simple"
words = text.split()
count = len(words)

print("Words:", words)
print("Word count:", count)

Output:

Words: ['Python', 'makes', 'word', 'counting', 'simple']
Word count: 5

This works because:

  • text.split() creates a list of words
  • len(words) counts how many items are in that list
  • print() shows the result clearly

How the code works step by step #

Here is the same code again:

text = "Python makes word counting simple"
words = text.split()
count = len(words)

print("Word count:", count)

Step 1: Store the text #

text = "Python makes word counting simple"

The variable text stores the sentence as a string.

Step 2: Split the text into words #

words = text.split()

split() separates the string on whitespace.

That means spaces, tabs, and line breaks can all act as separators.

The result here is:

['Python', 'makes', 'word', 'counting', 'simple']

Step 3: Count the words #

count = len(words)

len() returns the number of items in the list.

Since the list has 5 items, the word count is 5.

If you want to learn these parts in more detail, see the reference pages for split() and len().

Reading text from user input #

You can make the script interactive by asking the user to enter a sentence.

If you are new to this, see how to get user input in Python.

text = input("Enter a sentence: ")
words = text.split()
count = len(words)

print("Word count:", count)

Example run #

Enter a sentence: Python is fun to learn
Word count: 5

This follows the same pattern:

  • get text with input()
  • split it into words
  • count the words with len()

Counting words in a text file #

You can also count words in a file.

The basic idea is:

  • open the file
  • read all text into one string
  • use split() and len()

If needed, see how to read a file in Python.

with open("sample.txt", "r", encoding="utf-8") as file:
    text = file.read()

words = text.split()
count = len(words)

print("Word count:", count)

Example file content #

Python makes word counting simple.
This is a short file.

Possible output #

Word count: 9

The important part is file.read(). It reads the file content into one string so you can count the words.

Limits of the simple approach #

This example is useful, but it is still a simple method.

Things to know:

  • punctuation stays attached to words
  • hyphenated words may not behave as expected
  • multiple spaces are handled well, but special text patterns may not be
  • this is for simple counting, not advanced language processing

For example:

text = "Hello, world!"
print(text.split())
print(len(text.split()))

Output:

['Hello,', 'world!']
2

This counts 2 words, which may be fine for many cases. But notice that Hello, still includes the comma, and world! still includes the exclamation mark.

Simple improvement with cleanup #

A small improvement is to clean basic punctuation before splitting.

This version:

  • converts text to lowercase
  • removes a few common punctuation marks
  • then counts the words
text = "Hello, world! Python makes word counting simple."

clean_text = text.lower()
clean_text = clean_text.replace(",", "")
clean_text = clean_text.replace(".", "")
clean_text = clean_text.replace("!", "")

words = clean_text.split()
count = len(words)

print("Clean text:", clean_text)
print("Words:", words)
print("Word count:", count)

Output:

Clean text: hello world python makes word counting simple
Words: ['hello', 'world', 'python', 'makes', 'word', 'counting', 'simple']
Word count: 7

This improves results for many common sentences.

It is still a simple approach, but it is often better than splitting the raw text directly.

Expected output #

Here is a short sample sentence and its expected result:

text = "Python makes word counting simple"
words = text.split()
count = len(words)

print("Word count:", count)

Output:

Word count: 5

If your result is different, check the exact text you used.

Common mistakes #

Here are some common problems beginners run into.

Using len(text) instead of len(text.split()) #

This counts characters, not words.

text = "Python makes word counting simple"

print(len(text))          # character count
print(len(text.split()))  # word count

Forgetting parentheses in split() #

This is wrong:

words = text.split

This is correct:

words = text.split()

You must call the method with parentheses.

Trying to count file words without reading the file first #

This will not work the way you want:

with open("sample.txt", "r", encoding="utf-8") as file:
    print(len(file.split()))

A file object does not have the text yet. You need to read the content first:

with open("sample.txt", "r", encoding="utf-8") as file:
    text = file.read()

print(len(text.split()))

Expecting punctuation to be treated the same #

In the simple version:

  • "hello"
  • "hello,"

are not exactly the same text.

That is why cleanup can improve results.

Debugging tips #

If your script is not giving the result you expect, print the intermediate values.

Useful checks:

print(text)
print(text.split())
print(len(text.split()))
print(repr(text))

What these help with:

  • print(text) shows the original text
  • print(text.split()) shows the exact pieces being counted
  • print(len(text.split())) confirms the final count
  • print(repr(text)) helps you see hidden characters like \n

FAQ #

Does split() always count words correctly? #

No. It works well for simple text, but punctuation and special cases can affect the result.

Why not use len(text) for word count? #

len(text) counts characters, not words. You need len(text.split()) to count word-like pieces.

Can I count words in a file with the same method? #

Yes. Read the file into a string first, then use split() and len().

What happens with extra spaces? #

split() handles normal extra whitespace well and usually ignores repeated spaces.

See also #

Press Esc to close