Python: Count the Total number of words in a file?

17,122

The issue here is that textInput is a string, so it doesn't have the items() method.

If you only want the number of words, you can try using len:

print len(textInput.split(' '))

If you want each word, and their respective occurrences, you need to use count instead of textInput:

    count = {}
    for i in textInput.split(' '):
        if i in count:
            count[i] += 1
        else:
            count[i] = 1
    for word, times in count.items():
        print(word , times)
Share:
17,122
user2581724
Author by

user2581724

Updated on June 05, 2022

Comments

  • user2581724
    user2581724 almost 2 years

    for this program I'm trying to ask the user enter as much text as he/she wants in a file and have the program count the Total number of words that was stored in that file. For instance, if I type "Hi I like to eat blueberry pie" the program should read a total of 7 words. The program runs fine until I type in Option 6, where it counts the number of words. I always get this error: 'str' object has no attribute 'items'

    #Prompt the user to enter a block of text.
    done = False
    textInput = ""
    while(done == False):
        nextInput= input()
        if nextInput== "EOF":
            break
        else:
            textInput += nextInput
    
    #Prompt the user to select an option from the Text Analyzer Menu.
    print("Welcome to the Text Analyzer Menu! Select an option by typing a number"
        "\n1. shortest word"
        "\n2. longest word"
        "\n3. most common word"
        "\n4. left-column secret message!"
        "\n5. fifth-words secret message!"
        "\n6. word count"
        "\n7. quit")
    
    #Set option to 0.
    option = 0
    
    #Use the 'while' to keep looping until the user types in Option 7.
    while option !=7:
        option = int(input())
    
        #I get the error in this section of the code.
        #If the user selects Option 6, print out the total number of words in the
        #text.
        elif option == 6:
            count = {}
            for i in textInput:
                if i in count:
                    count[i] += 1
                else:
                    count[i] = 1
            #The error lies in the for loop below. 
            for word, times in textInput.items():
                print(word , times)
    
  • OdraEncoded
    OdraEncoded over 10 years
    By the way, .split() without arguments removes any white space character inlucing new lines and tabs. .split(' ') will remove only words separated by a space.