Python: ¿Cuenta el número total de palabras en un archivo?

para este progtwig, estoy tratando de pedirle al usuario que ingrese todo el texto que desee en un archivo y que el progtwig cuente el número total de palabras que se almacenaron en ese archivo. Por ejemplo, si escribo “Hola, me gusta comer pastel de arándanos”, el progtwig debería leer un total de 7 palabras. El progtwig funciona bien hasta que escribo la Opción 6, donde cuenta el número de palabras. Siempre recibo este error: el objeto ‘str’ no tiene atributos ‘elementos’

#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) 

El problema aquí es que textInput es una cadena, por lo que no tiene el método items() .

Si solo quieres el número de palabras, puedes intentar usar len:

 print len(textInput.split(' ')) 

Si desea cada palabra, y sus respectivas apariciones, debe usar count lugar de 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) 

Para contar el número total de palabras (incluidas las repeticiones), puede usar esta frase de una línea, donde ruta_archivo es la ruta absoluta del archivo:

 sum(len(line.split()) for line in open(file_path))