Notepad++ Leerzeichen in bestimmtem Bereich ersetzen

NewUser007

Newbie
Registriert
Nov. 2024
Beiträge
3
Hallo,

ich beschäftige mich seit Wochen zum ersten mal mit Notepad++ und komme bei nachfolgendem Problem an meine Grenzen.

Ich habe längere Datensätze mit Namen, Anschriften, Geburtsdatum etc. und möchte in den Zeilen nur die Leerzeichen innerhalb eines bestimmten Bereiches ersetzen.

Als Beispiel:

mehrere variable Daten; {Name Vorname Straße PostleitzahlOrt Geburtsdatum Datum Ort} noch mehr variable Daten

Wie schaffe ich es alle Leerzeichen innerhalb der Klammer zu ersetzen ohne die Leerzeichen des restlichen Datensatzes anzugreifen? Die angegebenen Klammern habe ich nur als Beispiel verwendet, es kann auch jede andere Form von Klammer sein.

Ich schaffe es leider nur den gesamten Bereich in den Klammern oder jedes Leerzeichen im gesamten Datensatz auszuwählen.

ist dies mit Notepad++ überhaupt möglich oder verlange ich mehr von dem Programm als es liefern kann?

Ich hoffe mir kann hier jemand weiter helfen, da meine tagelange Suche im Internet nichts gebracht hat.

Vielen Dank im Voraus
 
Hab hier auf der Arbeit leider kein Notepad++ und kann es nicht ausprobieren.
Sollte aber möglich sein, wenn man Lookbehind und Lookahead benutzt, also such nach { und such vor }

Du gehst auf Suchen & Ersetzen und wählst Regulärer Ausdruck
Da dann
(?<=\{[^{}])\s+(?=[^{}]\})
einsetzen (hoffe ich hab das im Kopf richtig zusammen geklöppelt).

bei ersetzen durch gibst du nichts ein und dann sollte es klappen.
 
  • Gefällt mir
Reaktionen: Limmbo
Sieht nach CSV aus. Einfach nach Excel/Libre Office mit Semikolon als Trennzeichen importieren. Dann Spalte markieren und die normale Ersetzen Funktion verwenden.
 
@umask007 gut erkannt, es handelt sich tatsächlich um eine Datei, die dann CSV importiert wird.

Das Problem ist, dass ich Semikolon im Datensatz als Trennzeichen eingefügt habe, aber die Bereiche in der Klammer nicht getrennt werden sollen, weswegen ich die Leerzeichen einfach durch ein "_" ersetzen möchte.
Da es sich um mehrere Datensätze handeln, würde ich von einer manuellen Korrektur gerne absehen.

Bevorzugt möchte ich den kompletten Datensatz den ich täglich neu bekomme mit einem Makro in Notepad++ direkt für den Datenimport vorbereiten, aber leider hängt es an dem beschriebenen Problem ^^.

@Smily: vielen Dank. Leider findet Notepad++ mit der angegebenen Lösung kein Vorkommen in der gesamten Datei.

Und ja, ich benutze reguläre Audrücke. Jedenfalls versuche ich es xD
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
NewUser007 schrieb:
Das Problem ist, dass ich Semikolon im Datensatz als Trennzeichen eingefügt habe, aber die Bereiche in der Klammer nicht getrennt werden sollen, weswegen ich die Leerzeichen einfach durch ein "_" ersetzen möchte.
Da es sich um mehrere Datensätze handeln, würde ich von einer manuellen Korrektur gerne absehen.
So könnte das Makro in etwa in Python aussehen:
Python:
import csv
from typing import List

def read_csv_file()->List[List[str]]:
    with open('test.csv') as csvfile:
        data = csv.reader(csvfile, delimiter=';')
        return list(data)

def replace_space(data:List[List[str]]):
    for d in data:      
        d[1]=d[1].replace(" ","_")

def write_csv(data:List[List[str]]):
    with open('test2.csv', 'w') as csvfile:
        writer = csv.writer(csvfile, delimiter=';')
        for line in data:
            writer.writerow(line)


data =read_csv_file()
print(data)
replace_space(data)
print(data)

write_csv(data)
Python als Skriptsprache in Notepad++:
https://npppythonscript.sourceforge.net/
 
Zuletzt bearbeitet:
Ich mag irgendwie Excel. Ist in der Vorbereitung vielleicht "aufwendiger" als eine einzelne Formel, aber funzt auch. Den Text in 3 Spalten einteilen, dann in der mittleren Spalte die Leerzeichen löschen und die 3 Spalten wieder zusammen fügen.

Angenommen, der Text steht in A1
B1: =LINKS(A1; FINDEN("{"; A1) - 1)
C1: =TEIL(A1; FINDEN("{"; A1); FINDEN("}"; A1) - FINDEN("{"; A1) + 1)
D1: =RECHTS(A1; LÄNGE(A1) - FINDEN("}"; A1))

Dann steht in der Mitte "{Name Vorname Straße PostleitzahlOrt Geburtsdatum Datum Ort}"
Die Spalte einmal kopieren und mit STRG+Umschalt+V als Text einfügen.
Mit Suchen und ersetzen die Leerzeichen entfernen.
Und in E1 mit =B1&C1&D1 alles wieder zusammen bauen. :pcangry:
 
Ich mach das NUR so, meine CSV haben ständig Formeln. Muss man nachher natürlich wieder als CSV speichern. Man muss natürlich schauen, dass keine Leerzeichen sind, wo keine hin gehören.

Aber klar, ein Programm, was das alles sofort macht, ist einfacher. Das andere ist aufwendiger, geht aber problemlos.
 
Vielen Dank für die ganzen Rückmeldungen.

Da mir leider nur Notepad++ und die regulären Microsoft Office Programme zur Verfügung stehen, fallen diese Vorschläge leider raus.

Ich werde, wie Smiley es angesprochen hat, umdenken müssen und den Umweg über Excel nehmen (der vorgeschlagene Weg funktioniert leider nicht, danke dir trotzdem) um den Datensatz automatisch so zu bearbeiten wie er aussehen muss.

Nochmal danke an alle
 
Zuletzt bearbeitet:
Zurück
Oben