Programa para eliminar caracteres especiales no ascii de archivos de texto grandes

Tengo archivos de texto de más de 100 MB de tamaño y tienen muchos caracteres especiales. No puedo importarlos a mi DBMS porque PostgreSql no reconoce estos caracteres. ¿Cómo puedo eliminarlos? ¿Qué software hace esto?

Actualmente estoy usando EmEditor pero tengo que encontrar caracteres especiales manualmente y reemplazarlos todos. Hay toneladas de ellos. Más de 10k. Estoy en Windows.

¿Tiene acceso a una máquina Linux? Sería una sola línea de comando en Linux, si puede iniciarlo, por ejemplo, con un Live CD

Respuestas (2)

Una secuencia de comandos de python muy simple , o incluso desde una sesión interactiva de terminal/línea de comando , podría leer desde un archivo de entrada y escribir en un archivo de salida mientras cambia la codificación a ASCII; tendría la opción de qué hacer con los caracteres no conformes de :

  • ignorar omitir ninguno caracteres ascii
  • reemplazar con?
  • xmlcharrefreplace la salida en un formato comoꀀ
  • barra invertida reemplazar la salida en un formato como\\ua000
  • salida namereplace en un formato como \\N{YI SYLLABLE IT}donde los nombres están disponibles.

El código, en Python 3 sería algo así como, sin probar :

with open('somefilename') as infile: # You may need to add 'rb' to the open command
   with open('outname', 'wt') as outfile:  # You may need to use 'wb' here
      outfile.write(infile.read().encode('ascii', 'backslashreplace'))

El código anterior leerá el archivo de entrada, lo transcodificará y lo escribirá; también podría, para un archivo grande, especificar un tamaño de búfer máximo en el readmétodo.

Consulte https://docs.python.org/3/howto/unicode.html para obtener más detalles.

Python es gratuito, gratuito y de código abierto, y está disponible para casi todas las plataformas, está preinstalado en la mayoría de las plataformas que no son de Windows .

Instale el editor CudaText .

  • Llame al elemento de menú "Complementos - Crear complemento"
  • Ingrese el nombre del complemento "MyRemove" e ingrese el nuevo texto del complemento a continuación.
  • Guarde, reinicie CudaText, aparece el nuevo complemento "Complementos - MyRemove".
  • Abra su archivo con no ASCII
  • Ejecutar complemento
  • Guardar archivo como...

Texto del complemento:

from cudatext import *

class Command:
    def run(self):
        s=ed.get_text_all()
        for i in range(32):
            if not i in [10,13,9]:
                s=s.replace(chr(i), '')
        ed.set_text_all(s)