Python | Codificar palabras de un archivo de texto

Dados algunos datos en un archivo de texto, la tarea es codificar el texto y generarlo en un archivo de texto separado. Entonces, necesitamos escribir un programa en Python que lea un archivo de texto, codifique las palabras en el archivo y escriba la salida en un nuevo archivo de texto.

Reglas a seguir: 

  • Las palabras menores o iguales a 3 caracteres no necesitan codificarse.
  • No mezcle el primer y el último carácter, por lo que la codificación puede convertirse en Srbmnacilg o Srbmnailcg o Snmbracilg , es decir, las letras, excepto la primera y la última, se pueden codificar en cualquier orden.
  • La puntuación al final de la palabra debe mantenerse como está, es decir, «Sorprendente», podría convertirse en «Spsirnirug», pero no en «Spsirn, irug».
  • Se admitirán los siguientes signos de puntuación: coma, signo de interrogación, punto, punto y coma, exclamación.
  • Haga esto para un archivo y mantenga secuencias de líneas.

Al ejecutar el programa, debe solicitar al usuario que ingrese el nombre del archivo de entrada y generar un archivo de salida con texto codificado. El archivo de salida debe nombrarse agregando la palabra «Codificado» al nombre del archivo de entrada.

Ejemplo: 

Input :  MyFile.txt ->
  
Scrambling words is very  
interesting. Because even  
if they are scrambled, it   
doesn't impact our   
reading. Because we don't 
read letter by letter, we 
read the word as a whole.   

Output : MyFileScrambled.txt ->
  
Srbmnacilg words is very   
itrensientg. Bscauee even  
if tehy are srelabcmd, it  
dosn'et ipcmat our 
raidneg. Bacusee we dn'ot 
raed lteetr by letetr, we 
raed the word as a wolhe.

A continuación se muestra la implementación:  

Python3

import random
  
punct = (".", ";", "!", "?", ",")
count = 0
new_word = ""
  
inputfile = input("Enter input file name:")
  
with open(inputfile, 'r') as fin:
    for line in fin.readlines():  # Read line by line in txt file
  
        for word in line.split():  # Read word by word in each line
  
            if len(word) > 3:  # If word length >3
  
                '''If word ends with punctuation
                      Remove firstletter, lastletter and punctuation
                      Shuffle the words
                      Add the removed letters (first letter)
                      Add the removed letters (last letter)
                      Add the removed letters (punctuation mark)'''
  
                if word.endswith(punct):
                    word1 = word[1:-2]
                    word1 = random.sample(word1, len(word1))
                    word1.insert(0, word[0])
                    word1.append(word[-2])
                    word1.append(word[-1])
  
                    '''If there is no punctuation mark 
                      Remove first letter and last letter
                      Shuffle the word
                      Add the removed letters (first letter)
                      Add the removed letters (last letter)
                      Append the word and " " to the previous words'''
  
                else:
                    word1 = word[1:-1]
                    word1 = random.sample(word1, len(word1))
                    word1.insert(0, word[0])
                    word1.append(word[-1])
                    new_word = new_word + ''.join(word1) + " "
  
            '''If word length <3
                  just append the word and " " to the previous words'''
  
        else:
            new_word = new_word + word + " "
  
        # "Append to <filename>Scrambled.txt"
  
with open((inputfile[:-4] + "Scrambled.txt"), 'a+') as fout:
    fout.write(new_word + "\n")
  
new_word = ""

Producción: 

Smcinrablg wodrs very Bauscee eevn tehy dnoes't
icpamt Bcuesae d'not read lteter raed wrod whole. 

Publicación traducida automáticamente

Artículo escrito por NarenSaiKrishna y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *