¿Cómo contar e imprimir el número de palabras en cada línea en un archivo?

Quiero contar el total de palabras en cada línea de un archivo e imprimirlas. Intenté

with codecs.open('v.out','r',encoding='utf-8') as f: for line in f.readlines(): words = len(line.strip(' ')) print words 

el archivo de entrada es:

 hello try it who knows it may work 

La salida que obtengo es:

 6 7 10 12 

pero lo que necesito es:

 1 2 2 3 

¿Hay alguna función que pueda usar? Tengo que imprimir la primera palabra de cada línea en un archivo, e imprimir de manera similar la palabra del medio y la última palabra de la línea en archivos separados.

Related of "¿Cómo contar e imprimir el número de palabras en cada línea en un archivo?"

Estabas tan cerca Esta línea:

 words = len(line.strip(' ')) 

debiera ser:

 words = len(line.split(' ')) 

strip elimina los caracteres del principio y final de la cadena, la split divide la cadena en una lista de cadenas.

Estás eliminando espacios de los extremos , no dividiendo las palabras. Ahora estás contando los caracteres restantes, no palabras.

Utilice str.split() lugar:

 words = len(line.split()) 

No se requieren argumentos, o use None ; eliminará los espacios en blanco de los extremos, y se dividirá en espacios en blanco de ancho arbitrario, dándole palabras:

 >>> 'it may work'.split() ['it', 'may', 'work'] >>> len('it may work'.split()) 3