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)
Author by
user2581724
Updated on June 05, 2022Comments
-
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 over 10 yearsBy the way,
.split()
without arguments removes any white space character inlucing new lines and tabs..split(' ')
will remove only words separated by a space.