Programm zum Entfernen von Nicht-ASCII-Sonderzeichen aus großen Textdateien

Ich habe Textdateien mit einer Größe von über 100 MB und sie haben viele Sonderzeichen. Ich kann sie nicht in mein DBMS importieren, da PostgreSql diese Zeichen nicht erkennt. Wie kann ich sie entfernen? Welche Software macht das?

Ich verwende derzeit EmEditor, muss aber Sonderzeichen manuell finden und alle ersetzen. Es gibt Tonnen von ihnen. Über 10k. Ich bin auf Windows.

Haben Sie Zugriff auf eine Linux-Maschine? Unter Linux wäre es eine einzige Kommandozeile, wenn man es zum Beispiel mit einer Live-CD booten kann

Antworten (2)

Ein sehr einfaches Python - Skript oder sogar eine interaktive Terminal-/Befehlszeilensitzung könnte aus einer Eingabedatei lesen und in eine Ausgabedatei schreiben, während die Codierung in ASCII geändert wird - Sie hätten die Wahl, was Sie mit den nicht konformen Zeichen von tun möchten :

  • ignorieren keine ASCII-Zeichen überspringen
  • durch ersetzen?
  • xmlcharreplace- Ausgabe in einem Format wieꀀ
  • Backslashreplace -Ausgabe in einem Format wie\\ua000
  • namereplace- Ausgabe in einem Format wie \\N{YI SYLLABLE IT}wo Namen verfügbar sind.

Der Code in Python 3 wäre etwa ungetestet :

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'))

Der obige Code liest die Eingabedatei, transkodiert sie und schreibt sie aus - Sie könnten für große Dateien auch eine maximale Puffergröße in der readMethode angeben.

Weitere Einzelheiten finden Sie unter https://docs.python.org/3/howto/unicode.html .

Python ist kostenlos, kostenlos und Open Source und für nahezu jede Plattform verfügbar. Es ist auf den meisten Nicht-Windows-Plattformen vorinstalliert .

Installieren Sie den CudaText- Editor.

  • Menüpunkt "Plugins - Plugin erstellen" aufrufen
  • Geben Sie den Plugin-Namen „MyRemove“ ein und geben Sie unten den neuen Plugin-Text ein.
  • Speichern, CudaText neu starten, neues Plugin erscheint "Plugins - MyRemove".
  • Öffnen Sie Ihre Datei mit Nicht-ASCII
  • Plugin ausführen
  • Datei speichern als...

Plugin-Text:

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)