una tiene texto saber palabras lista las funcion frecuencia frase cuantas contar como caracteres python list text counter python-textprocessing

tiene - funcion contar palabras python



¿Cómo contar el número de palabras en una oración, ignorar números, puntuación y espacios en blanco? (6)

¿Cómo voy a contar las palabras en una oración? Estoy usando Python.

Por ejemplo, podría tener la cadena:

string = "I am having a very nice 23!@$ day. "

Eso sería 7 palabras. Tengo problemas con la cantidad aleatoria de espacios después de cada palabra, así como cuando se trata de números o símbolos.


Este es un simple contador de palabras usando expresiones regulares. La secuencia de comandos incluye un bucle que puede terminar cuando haya terminado.

#word counter using regex import re while True: string =raw_input("Enter the string: ") count = len(re.findall("[a-zA-Z_]+", string)) if line == "Done": #command to terminate the loop break print (count) print ("Terminated")


Ok, aquí está mi versión de hacer esto. Noté que quieres que tu salida sea 7 , lo que significa que no quieres contar caracteres especiales y números. Así que aquí está el patrón de expresiones regulares:

re.findall("[a-zA-Z_]+", string)

Donde [a-zA-Z_] significa que coincidirá con cualquier carácter entre az (minúsculas) y AZ (mayúsculas).

Sobre los espacios. Si desea eliminar todos los espacios adicionales, simplemente haga lo siguiente:

string = string.rstrip().lstrip() # Remove all extra spaces at the start and at the end of the string while " " in string: # While there are 2 spaces beetwen words in our string... string = string.replace(" ", " ") # ... replace them by one space!


Puedes usar regex.findall() :

import re line = " I am having a very nice day." count = len(re.findall(r''/w+'', line)) print (count)


str.split() sin ningún argumento se divide en ejecuciones de caracteres de espacio en blanco:

>>> s = ''I am having a very nice day.'' >>> >>> len(s.split()) 7

De la documentación enlazada:

Si sep no se especifica o es None , se aplica un algoritmo de división diferente: las ejecuciones de espacios en blanco consecutivos se consideran como un solo separador, y el resultado no contendrá cadenas vacías al principio o al final si la cadena tiene espacios en blanco iniciales o finales.


def wordCount(mystring): tempcount = 0 count = 1 try: for character in mystring: if character == " ": tempcount +=1 if tempcount ==1: count +=1 else: tempcount +=1 else: tempcount=0 return count except Exception: error = "Not a string" return error mystring = "I am having a very nice 23!@$ day." print(wordCount(mystring))

la salida es 8


s = "I am having a very nice 23!@$ day. " sum([i.strip(string.punctuation).isalpha() for i in s.split()])

La declaración anterior pasará por cada parte del texto y eliminará las puntuaciones antes de verificar si la parte es realmente una cadena de alfabetos.