Wörter automatisch trennen

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
frogtie
Junior Member
Junior Member
Posts: 45
Joined: 2008-04-09, 13:15 UTC

Wörter automatisch trennen

Post by *frogtie »

Guten morgen allerseits....

Ich habe gerade ein Problem:

In einer Dateiliste sind ca 18000 Namen direkt zusammen geschrieben worden, also ohne Leerzeichen dazwischen.
Der jeweils erste Buchstabe ist groß geschrieben.

Bsp:

SusanneBach
PeterMeissner
RalfMustermann

Ich soll für meinen Chef jetzt die Namen trennen, d.h. es soll ein Leerzeichen dazwischen.

Gibst es bei RegEx / Mehrfachumbenennung eine Funktion die das für mich erledigt. Ich habe schon alles möglich nachgeschaut, habe aber nichts finden können.

Danke im Voraus...
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Im MUT:
Suchen nach:

Code: Select all

(?-i)([A-Z][a-z]+)([A-Z][a-z]+)
Ersetzen durch:

Code: Select all

$1 $2
[_] Extension
[x] RegEx

Vorher an Testdaten ausprobieren!

HTH
Holger
frogtie
Junior Member
Junior Member
Posts: 45
Joined: 2008-04-09, 13:15 UTC

Post by *frogtie »

Herzlichen Dank HolgerK,

Ich werde es nachher mal ausprobieren.

Ich hoffe es ist nicht zu unverschämt, wenn ich Dich um eine Erklärung der "suchformel" bitte. Ich verstehe z.B. "(?-i) nicht ....

Danke im Voraus.
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Einfach mal in der Hilfe nach "Reguläre Ausdrücke" suchen.

TC beachtet per Default bei der RegEx-Suche keine GROSS/klein Buchstabenunterschiede (Windows machen bei Dateinamen ja auch keine Unterscheidung)

Mit (?-i) wird die Unterscheidung Gross-/Kleinschreibung aktiviert.

Ansonsten wird einfach nur nach zwei aufeinanderfolgende Worten bestehend aus einem Grossbuchstaben "[A-Z]" gefolgt von einem oder mehreren Kleinbuchstaben "[a-z]+" gesucht.
Die beiden gefundenen Worte "$1 $2" werden dann ersetzt indem ein Leerzeichen zwischen sie platziert wird.

Könnte sein, das du noch mit Umlauten Probleme bekommst.
Dann einfach die zusätzlichen Buchstaben mit in der Suche aufnehmen:
[A-ZÖÄÜ] bzw. [a-zäöüß]

Gruss
Holger
frogtie
Junior Member
Junior Member
Posts: 45
Joined: 2008-04-09, 13:15 UTC

Post by *frogtie »

Danke......

DU BIST EINSAME SPITZE :P
User avatar
white
Power Member
Power Member
Posts: 5838
Joined: 2003-11-19, 08:16 UTC
Location: Netherlands

Post by *white »

frogtie wrote:Ich verstehe z.B. "(?-i) nicht ....
Es hat die gleiche Wirkung wie der Checkbox "^" (Beachte Groß-/Kleinschreibung).
User avatar
Kerstin83
Senior Member
Senior Member
Posts: 341
Joined: 2007-11-25, 10:18 UTC
Location: Hannover

Post by *Kerstin83 »

Liebes Forum :)

Bei 18000 Namen wäre mir das zu unsicher.

Ich würde einen ganz anderen Weg beschreiten, indem ich eine Textdatei mit sämtlichen Dateinamen machen würde (geht ja einfach mit TC), diese dann in Excel lade und entsprechend bearbeite. Dann wieder als Textdatei exportiere und die Dateien nach dieser Textdatei-Liste umbenenne (auch einfach mit TC).

Ist natürlich ein bisschen umständlicher. Aber du musst es ja nur einmal machen (oder kommt das öfter vor?)

Der Vorteil wäre, dass man in Excel umfangreiche Prüfungen vornehmen könnte.
Es gibt nämlich Probleme, wenn zum Beispiel jemand einen Dr-Titel oder einen Adelstitel trägt oder doch mal ein Zeichen oder Sonderzeichen in einem Namen vorkommt (z.B. in der Abkürzung Dr.) oder es gibt irgendwelche komischen ausländischen Namen oder oder oder.

Ein Nebeneffekt wäre, dass du eine Liste mit allen Namen hättest (ob du sie gebrauchen kannst weiß ich natürlich nicht).

Kann man alles auch mit regulären Ausdrücken abbilden, wird aber kompliziert.

Wenn die Daten keine Fehler enthalten und alle Personen genau nach dem Muster MaxMustermann heißen ist der von Holger genannte Weg natürlich einfacher.

Liebe Grüße

Kerstin
Ich hasse Leute, die Sätze nicht zuende
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Dumm nur das Regular Expressions geradezu für solche Zwecke prädestiniert sind/entwickelt wurden, während Excel eher für die Verwurschtelung von Zahlenkolonnen gedacht ist.

Man kann zwar auch in Office vieles mit VBA-Makros lösen, allerdings ist dann noch lange nicht gesagt, dass diese Lösungen fehlerfreier sind als eine entsprechende Lösung mit RegEx.

Naja, Geschmackssache.

Gruss
Holger
User avatar
Kerstin83
Senior Member
Senior Member
Posts: 341
Joined: 2007-11-25, 10:18 UTC
Location: Hannover

Post by *Kerstin83 »

Lieber Holger :)

es ging mir nicht um die Alternative "Excel" oder "Reguläre Ausdrücke". Excel beherrscht übrigens "Reguläre Ausdrücke" sehr gut. Und ich habe auch überhaupt nichts gegen reguläre Ausdrücke und verwende sie selbst oft und gerne. Allerdings vor allem in PHP. Reguläre Ausdrücke haben zwar wie alle endlichen Automaten das objektive Problem (und das ist keine Geschmacksache), dass sie ihre Grenzen haben. Diese, auch mit meinen Anmerkungen simple Aufgabe kann man aber locker damit lösen.

Das Problem hier ist, dass man direkt an den Daten arbeitet. Mein Vorschlag war eigentlich nicht so sehr auf Excel bezogen. Eher so, dass man erst einmal eine Liste macht, diese Liste mit geeigneten Programmen (z.B. Excel) entsprechend ändert und prüft (mit oder ohne regulären Ausdrücken) und erst dann mit dieser Liste die Änderung der Dateinamen vornimmt.

Excel habe ich genannt, weil die meisten dieses Programm besitzen und damit umgehen können. Und weil es auch wirklich gut geeignet ist. Aber das ist Geschmacksache.

Man muss es übrigens nicht mit einem Makro oder VBA machen, sondern kann es durch ganz einfache Formeln lösen. Wenn man möchte mit regulären Ausdrücken. Und ganz wesentlich, man kann die Ergebnisse sehr leicht überprüfen.

Direkt in TC arbeiten kann man eigentlich nur, wenn Fehler nicht schlimm sind. Weil die Prüfmöglichkeiten in TC zu eingeschränkt sind. Und Fehler können nicht nur in den Daten vorkommen, schnell vergisst man etwas bei der Programmierung.
Wenn man die Operation öfter durchführen will kann man in dem externen Programm auch einen Regulären Ausdruck entwickeln und prüfen, den man dann in TC eingibt.

Und, um es noch einmal zu sagen, wenn die Daten wirklich so einfach aufgebaut sein sollten wie beschrieben, ginge das auch direkt in TC. Da könnte man eigentlich nichts falsch machen. Aber daran glaube ich nicht. Ein paar Probleme wird es geben bei 18000 Personen (z. B. "von").
Ich hasse Leute, die Sätze nicht zuende
Post Reply