Frage Ersetzen aller speziellen / akzentuierten Zeichen durch äquivalente reguläre Zeichen in Notepad ++


Ich versuche, eine Möglichkeit zu finden, automatisch alle speziellen / akzentuierten Buchstaben / Zeichen zu suchen und zu ersetzen (wie z. B. Â/Ô) mit den entsprechenden regulären Buchstaben / Zeichen (A/O) in Notepad ++.

Mit ToolFx versucht, aber es hat nicht funktioniert.


6
2017-10-05 09:05


Ursprung


stackoverflow.com/questions/133965/find-crlf-in-notepad deckt ungefähr dasselbe ab. - avirk


Antworten:


Der obige Vorschlag ist hervorragend, aber in diesem Moment würde es wegen eines Problems zwischen Notepad ++ und "Notepad ++ Python Script" nicht funktionieren. Seit einigen Monaten lädt Notepad ++ Plug-In-Manager eine alte Python-Skript-Version herunter, die nicht mit dem Editor funktioniert. Um das zu beheben:

  1. Beenden Sie Notepad ++
  2. Laden Sie die kompatible Version von SourceForge.
  3. Führen Sie das heruntergeladene Installationsprogramm aus, indem Sie darauf doppelklicken. Bei neueren Windows wird nach Administratorrechten gefragt.
  4. Stellen Sie sicher, dass Sie zu Beginn des Installationsvorgangs das richtige Installationslaufwerk auswählen. Es wird die Notepad ++ - Installationsdiskette nicht korrekt erkennen. Ich musste es erneut installieren, da es standardmäßig auf C: \ installiert wird, selbst wenn sich Notepad ++ auf einem anderen Datenträger befindet.
  5. Befolgen Sie die Anweisungen des Assistenten.
  6. Sobald der Installationsprozess abgeschlossen ist, starten Sie Notepad ++ erneut. Gehe nun und öffne das Plugin-Menü. Sie sollten ein neues "Python Script" -Element darin sehen. Wenn es dann angezeigt wird, haben Sie die richtige Version korrekt installiert. Sie können dies auch überprüfen, indem Sie den Plug-in-Manager öffnen, zur Registerkarte "Installiert" gehen und nach einem Eintrag suchen, der die Version 1.0.8 (zu diesem Zeitpunkt) des Python-Plug-Ins enthält.
  7. Du bist fast fertig. Gehen Sie zu den Plugins => Python Script => Konsolenmenü anzeigen. Ein Bereich soll am unteren Rand von Notepad ++ erscheinen. Es MUSS zeige eine Aufforderung wie die folgende:

    Python 2.7.6-notepad++ r2 (default, Apr 21 2014, 19:26:54) [MSC v.1600 32 bit (Intel)]
    Initialisation took 156ms
    Ready.
    

Die verschiedenen Versionsnummern sind ab heute aktuell, sie werden sich natürlich im Laufe der Zeit ändern. Wenn im unteren Teilfenster eine Exception angezeigt wird, die angibt, dass eine Exception aufgetreten ist oder (und) sie leer bleibt, haben Sie eine falsche Python Plug-in-Version installiert.

Nun wenden wir das Skript auf die richtige Weise an:

  1. Öffnen Sie zwei neue, leere Tabs / Dateien.
  2. Fügen Sie den Text mit Akzent in den ersten Text ein.
  3. Klicken Sie mit der rechten Maustaste auf die Registerkarte der zweiten und wählen Sie das Menü "In andere Ansicht verschieben". Die Notepad ++ Fenster werden geteilt.
  4. Öffnen Sie die Python Script Konsole wie oben beschrieben (Plugins => Python Script => Konsolenmenü anzeigen).
  5. Gehen Sie zu der Konsolenlinie am unteren Rand des Python-Fensters, sie hat eine ">>>" Markierung am Anfang.
  6. Art: from Npp import * Drücken Sie dann die Eingabetaste (von jetzt an nehmen Sie an, dass Sie am Ende der Befehle immer die Eingabetaste drücken).
  7. Eingeben: import unicodedata im selben Eingabetext.
  8. Klicken (wählen) Sie die Registerkarte mit dem akzentuierten Text (das ist wichtig!).
  9. Geben Sie die folgenden Befehle Zeile für Zeile in die Python-Eingabeaufforderung ein und drücken Sie nach jeder Zeile die Eingabetaste:

    eText = editor.getText()
    uText = unicode(eText, "UTF-8")
    nText = unicodedata.normalize( "NFKD", uText )
    

Wenn du sichergehen willst, dass Python "den Text wirklich erhalten hat": nachdem du getippt hast eText = editor.getText() (+ Eingabetaste), geben Sie ein: print eText + Geben Sie ein. Sie sollten Ihren Text mit Akzent im Ausgabefenster der Python-Konsole sehen.

  1. Klicken (wählen) Sie die leere Registerkarte (das ist wichtig!).
  2. Eingeben: editor.addText( nText.encode('ASCII', 'ignore') ) im üblichen Eingabefeld der Python-Konsole eingeben.
  3. Die leere Registerkarte soll den konvertierten, akzentlosen Text ausfüllen. Achten Sie darauf, dieser To-Do-Liste sorgfältig zu folgen, da es leicht ist, einen Schritt zu verpassen (besonders auf die Tabs klicken) und dann müssen Sie von vorne anfangen.

4
2017-11-14 11:21



Ich bekomme einen Fehler auf dem zweiten Komma: ... utf_8.py, Zeile 16, in decode Rückkehr codecs.utf_8_decode (Eingabe, Fehler, True). Ich benutze diesen Befehl: uText = eText.encode ('utf8'), um die Zeichenposition anzuzeigen. - lsalamon


Beschränken Sie sich nicht auf das, was Sie tun sehen als verfügbar sein. Wir haben Python innerhalb von N ++ verfügbar, und das bedeutet eine schnelle SO-Suche [python] [unicode] remove accents verrät diese hoch gewählte Frage damit genau umgehen!

Wir können leicht genug in N ++ testen, um zu sehen, wie es funktioniert:

  1. Öffnen Sie zwei neue Puffer / Tabs / Dateien oder wie immer Sie sie aufrufen möchten.
  2. Kopiere und füge diese lateinischen Wörter ein Erweiterte UTF-8-Zeichen in die erste.
  3. Klicken Sie mit der rechten Maustaste auf die Registerkarte der zweiten und "In andere Ansicht verschieben".
  4. Öffnen Sie die Python Script-Konsole und versuchen Sie folgende Befehle:

    von Npp importieren *
    Unicodedaten importieren
    << Wählen Sie die Registerkarte in der Ansicht 1. >>
    eText = editor.getText () << Wählen Sie die Registerkarte in der Ansicht 2. >>
    uText = Unicode (eText, "UTF-8")
    nText = unicodedata.normalize ("NFKD", uText)
    editor.addText (nText.encode ('ASCII', 'ignorieren'))

Wenn man sich ein wenig umschaut, scheint es, dass es viele Möglichkeiten gibt, Akzente zu entfernen, die Frage ist, was am besten für dich funktioniert. Und jetzt, da Sie sehen können, wie einfach es ist, diese Lösungen auf Ihrem Text zu "versuchen", gehen Sie los und geben Sie eine Chance. Sobald Sie eine bestimmte Methode mögen, fügen Sie sie (über das Plugin-Menü) als Skript hinzu und es wird immer da sein, wenn Sie es brauchen.

Habe Spaß!


Übrigens - wenn Sie Python Script nicht installiert haben, können Sie es mit den Plugins -> Plugin Manager installieren.


1
2017-10-08 18:29





Skript

Hier ist eine Variation des Skripts von der zuerst und zweite Antworten, die verwendet werden können, um einen Tastenkürzel zuzuweisen, um ausgewählten Text zu konvertieren:

class convert_char01:
    import unicodedata
    eText = editor.getSelText()
    uText = unicode(eText, encoding='utf-8', errors='ignore')
    nText = unicodedata.normalize( "NFKD", uText )
    editor.replaceSel(nText)

Abkürzung

So erstellen Sie einen Tastenkürzel zum Ausführen des Skripts:

  • Installieren Sie Python Script für NPP.
  • Erstelle ein neues Skript:
    • Gehe zu Plugins > Python-Skript > Neues Skript.
    • Nennen Sie es "convert_char.py" sagen.
  • Fügen Sie dieses Skript zum Menü hinzu:
    • Gehe zu Plugins > Python-Skript > Aufbau, klicke auf dein Benutzerskript und klicke auf Hinzufügen Schaltfläche zum Hinzufügen Menüpunkte.
    • Schlage auch Einstellungen vor Initialisierung zu AM ANFANG um die Dinge zu beschleunigen.
  • Erstellen Sie einen neuen Shortcut-Hotkey:
    • Wahrscheinlich muss NPP zuerst neu gestartet werden, damit der neue Menüpunkt angezeigt wird Verknüpfungsmapper.
    • Erstellen Sie einen neuen Verknüpfungsbeschleuniger unter die Einstellungen > Verknüpfungsmapper ....

Wenn Sie nun eine Zeichenfolge markiert haben, können Sie die Zeichen auf diesem Bildschirm schnell konvertieren, um das Skript ohne Verwendung der Konsole auszuführen.

Verweise


1
2018-01-02 00:15