Número de caracteres sin espacios en un archivo

Resuelto

Hola,

Tengo que crear un programa en python para contar los caracteres de un texto pero no debo contar los espacios.

Llevo varias horas buscando y no consigo encontrar una solución. Te adjunto lo que he comenzado a escribir.

4 respuestas

  1. Hola,

    O simplemente haces así:

    nb_spaces = ligne.count(' ') nb_car += (len(ligne) - nb_spaces)
    1
    1. ¡Muchas gracias!

      0
  2. Moderador

    Hola

    Sería necesario precisar a qué te refieres con espacio, ya que en Python a.isspace() devuelve True si a es un espacio, una tabulación o un salto de línea.

    Si hay que ignorar todos los caracteres que entran en esta categoría:

    def count_non_space_chars(s: str) -> int: return sum( 1 for a in s if not a.isspace() )

    Si solo se quiere ignorar los caracteres ' ':

    def count_non_space_chars(s: str) -> int: return sum( 1 for a in s if a != ' ' )

    Una vez hecho este elección, para usar la función en un archivo, digamos /etc/motd:

    filename = "/etc/motd" with open(filename, "r") as f: print(count_non_space_chars(f.read()))

    Buena suerte

    1
    1. o entonces así:

      nb_spaces = ligne.count(chr(9)) + ligne.count(chr(32)) nb_car += (len(ligne) - nb_spaces)
      0
  3. Hola,

    En lugar de publicar una imagen, es mejor mostrar tu código aquí

    instrucciones:

    https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

    Visualmente, debería parecerse a esto:

    for k in range(10): print(k)

    Aparte de eso, existe un método de Python aplicable a las cadenas que permite contar las ocurrencias

    de un carácter dado (en este caso el espacio, por lo tanto)

    Y luego, hacemos esto:

    nb_car += (len(ligne) - nb_d_espaces_de_la_ligne)
    0
    1. ¿Puedes ayudarme a modificarlo? No entiendo realmente tu respuesta.

      0
  4. with open("devoirnsi.txt","r") as fic: nb_mot=0 nb_car=0 nb_ligne=0 nb_space=0 nb_voy=0 nb_cons=0 contenu=[] for ligne in fic: nb_ligne+=1 contenu+=ligne.split() nb_car+=len(ligne) print("El número de líneas en este texto es:", nb_ligne) print("El número de caracteres en este texto es:", nb_car-nb_space) print("El número de palabras en este texto es:", len(contenu)) print("El número de vocales en este texto es:", nb_voy) print("El número de consonantes en este texto es:", nb_cons) 
    0
    1. Buenas noches,

      Si no ves cómo hacerlo para no tener en cuenta los espacios, significa que no sabes lo que has codificado :-(

      - ¿Cómo funciona la función split?
      - ¿Para qué te sirve reducir el contenido de una línea a un array?

      Cuando seas capaz de responder a estos dos puntos, deberías poder avanzar significativamente en tu asunto (incluso resolver tu pregunta, de hecho).
      Sin embargo, si querías contar el número de espacios (cf tu variable 'nb_space'), te resultaría mejor proceder de otra manera, por ejemplo, buscando el carácter espacio _ ' '_ en cada línea o bien en una concatenación de tus diferentes líneas.
      Mantennos informados de tu progreso

      0
    2. @arscy

      ¡Gracias por tu ayuda, lo logré!

      0