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