 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Ilse
Anmeldedatum: 04.08.2006 Beiträge: 149
|
Verfasst am: Do Jul 03, 2008 3:08 pm Titel: Hilfe Text bearbeiten |
|
|
Hallo,
ich habe folgendes Problem:
Ich muß aus einem sehr umfangreichen Text alle Zeichen löschen, außer Zahlen!!!
Gibt es da eine Möglichkeit!
Beispiel Meine Textdatei:
C:\info.txt
| Code: |
Hier steht 0746/6661116 Text
Dann gibt es eine 55446611 Zeile mit Text.
Dann gibt es eine 5 54 - 466/12 Zeile mit Text.
|
Das Ergebnis sollte so aussehen:
mit; am Ende und nur Zahlen enthalten!!!
| Code: |
0746/6661116;
55446611;
55446612;
|
Würde mich sehr freuen, wenn Ihr mir da weiterhelfen könntet!
Komme einfach nicht mehr weiter! Habe mit suchen und ersetzen probiert, alles leider ohne Erfolg! |
|
| Nach oben |
|
 |
denick (n-l-i) Gast
|
Verfasst am: Do Jul 03, 2008 3:20 pm Titel: |
|
|
Moin,
das ist wohl keine Zahl : 0746/6661116;
Gibt es vielleicht sonst noch irgendwelche Zeichen, die doch erhalten bleiben sollen? Es würde den Support ungemein erleichtern, wenn Du diesmal gleich vollständig sagst, was Du wirklich machen willst.
 |
|
| Nach oben |
|
 |
Hasso
Anmeldedatum: 17.11.2005 Beiträge: 94 Wohnort: Hamburg
|
Verfasst am: Do Jul 03, 2008 3:44 pm Titel: |
|
|
| Code: | #x::
FileRead, Text, info.txt
StringReplace, text, text, `n, `;`n, A
neuerText:=RegExReplace(Text,"[^0-9;`n]","")
MsgBox, %neuerText%
return |
Getestet. _________________ Hasso
Programmers don't die. They just GOSUB without RETURN. |
|
| Nach oben |
|
 |
Ilse
Anmeldedatum: 04.08.2006 Beiträge: 149
|
Verfasst am: Do Jul 03, 2008 4:08 pm Titel: |
|
|
Hi Denick,
freue mich dass du dich meldest!
Also in erster Linie müssen aus dem Text Telefonnummern und Fax Nr.
richtig dargestellt werden. Das Problem ist aber, dass die Datei
unterschiedliche Darstellungen enthält.
Manchmal sieht die Tel. z.B. so aus:
Mitglied: 1 Tel. 0531/554433 oder Telefon 0 531 - 55 44 33 Fax (0 531 - 55 44 34) hier steht dann z.B. anderer Text der nicht benötigz wird.....
Frank neu Tel./Fax: +43(0)3344
und dann kommt die nächste Nr. Tel.: (0 39 43) 1276 31
Mitglied seit 2002: Tel.: (49) 6262 / 16 00 Fax 4433
Ich muß alles irgendwie in eine geordnete *.csv bringen
also alles was mit Tel. Tel.: Tele. Telefon Fax Fax. Nr
Sollte so aussehen: (also ohne den ganzen Text ...)
Mitglied Tel. Fax
ich weiß...kompliziert |
|
| Nach oben |
|
 |
AGU Gast
|
Verfasst am: Do Jul 03, 2008 4:31 pm Titel: |
|
|
Ich finde, es wird immer noch nicht ganz klar, was genau du jetzt haben möchtest. Sollen Zeichen wie ( ) / - nun mit in der CSV stehen oder nicht?
Soll der Mitgliedsname auch extrahiert werden, oder machst du das an anderer Stelle?
_________________
Gruß AGU |
|
| Nach oben |
|
 |
Ilse
Anmeldedatum: 04.08.2006 Beiträge: 149
|
Verfasst am: Do Jul 03, 2008 5:12 pm Titel: |
|
|
Hallo,
ich probier mich mal anders auszudücken:
Die Textdatei fängt immer mit dem Namen bzw. Einleitung an!
NUR - Sie wird nicht mit einem ; oder Feld getrennt! z.B.
Mitglieder aus GFK zu erreichen unter Tel.
Im Prinzip könnte alles vor der TEL. in einem Einleitungsfeld stehen!
Jeder Datensatz hat am Ende das Wort Mitglied
D.h. danach fängt der nächste Datensatz mit einem Text an!
Hier mal ein Beispiel des ChoasTextes:
| Code: |
Service für Mitglieder bitte Telefonisch unter 069/44433144
Wie jedes Jahr bieten wir diesen Service an. Mitglied
CVF für Mitglieder, Tel.: 44277444, Fax: 44270466 Mitglied
Reservierung nur per Tel.: 069/4431144 oder Fax Mitglied
|
Ich habe mal versucht die Datensätze farblich zu kennzeichnen!
Bei der Telefonnummer kann ruhig das Zeichen /-() mit drin sein!
Vielleicht braucht man den Text auch nicht zu löschen! Vielleicht kann man eine neue csv datei machen die die Felder Beschreibung, Tel, Fax enthält!
Nochmal zusammengefasst:
Jeder Datensatz hat:
Einleitungstext...
Telefon
ggf. Fax
Endbezeichnung: Mitglied
Das Übel, es steht alles in einer Textdatei... |
|
| Nach oben |
|
 |
Chucky
Anmeldedatum: 07.01.2006 Beiträge: 616 Wohnort: Powerland
|
Verfasst am: Fr Jul 04, 2008 12:23 am Titel: |
|
|
Der String "Mitglied" kommt 5 mal vor. Ich habe die Aufteilung - hoffentlich - korrigiert; ist es so richtig? | Code: | Service für Mitglieder bitte Telefonisch unter 069/44433144
Wie jedes Jahr bieten wir diesen Service an. Mitglied
CVF für Mitglieder, Tel.: 44277444, Fax: 44270466 Mitglied
Reservierung nur per Tel.: 069/4431144 oder Fax Mitglied | Oder muß "Mitglied" immer am Zeilenende stehen? |
|
| Nach oben |
|
 |
Ilse
Anmeldedatum: 04.08.2006 Beiträge: 149
|
Verfasst am: Fr Jul 04, 2008 8:13 am Titel: |
|
|
Hallo Chucky,
Ich habe alles nochmals nachgesehen! Also das Wort Mitglied steht immer am Zeilenende eines Datensatzes! (wie kann man so etwas machen...?)
Es wäre schon eine enorme Zeitersparnis wenn es überhaupt so funktionieren könnte.
Kopfzeile
Info;Text,Tel;Tel2;Fax
Wenn z.B. bei Info die ersten 4 oder 5 Wörter stehen würden das reicht!
Bei Text alles weitere...dann ein Feld für Tel. und ggf. Fax falls vorhanden!
Super wäre natürlich Tel.1 Tel.2 weil manche Datensätze haben 2 Tel.Nr.
Ich bin aber auch glücklich wenn es nur mit einer funktioniert!
Was auch gehen würde ist, dass grundsätzlich bei Mitglied ein neuer Datensatz gemacht wird. Dann würde ich alles weitere von Hand machen!
Hoffentlich klappt das irgendwie
Liebe Grüße
Ilse |
|
| Nach oben |
|
 |
Chucky
Anmeldedatum: 07.01.2006 Beiträge: 616 Wohnort: Powerland
|
Verfasst am: Sa Jul 05, 2008 7:35 am Titel: |
|
|
Wichtig ist, daß man sich vorher den gesamten Text genau ansieht und seine Struktur erkennt, damit man die richtigen Regeln für's Rausfiltern aufstellen kann. Was ich weiß (oder glaube, erkannt zu haben), ist:- Ein Datensatz endet mit "Mitglied".
- Ein Datensatz kann mehrere Zeilen umfassen.
- Die Zeilen enthalten kein Semikolon.
- Als Datenfelder sollen a) zusammenhängende Textteile ohne Ziffern und b) Telefon/Fax-Nummern semikolon-separiert werden.
- Die Anzahl der Datenfelder ist nicht fix.
- Ein Datensatz beginnt nie mit einer Tel.-/Fax-Nummer.
- Eine Telefon/Fax-Nummer besteht aus Ziffern (keine Mindestanzahl angegeben), die voneinander durch "/" getrennt sein können.
- Ob es eine Tel1-, Tel2- oder Fax-Nummer ist, läßt sich nicht eindeutig bestimmen. (Dazu gibt es zu wenig Beispiele.)
| Code: | InText =
(
Service für Mitglieder bitte Telefonisch unter 069/44433144
Wie jedes Jahr bieten wir diesen Service an. Mitglied
CVF für Mitglieder, Tel.: 44277444, Fax: 44270466 Mitglied
Reservierung nur per Tel.: 069/4431144 oder Fax Mitglied
)
OutText =
Line =
Loop, Parse, InText, `n
{
Line .= A_LoopField
If (RegExMatch(Line, "(.*?)Mitglied$", o)) {
; Trenner entfernen.
Line := RegExReplace(o1, "(\d)/(\d)", "$1$2")
; Jetzt sind Tel./Fax-Nummern zusammenhängende Ziffernblöcke.
; Jeweils vor und hinter einen Ziffernblock ein Semikolon setzen.
Line := RegExReplace(Line, "([^\d])(\d)", "$1;$2")
Line := RegExReplace(Line, "(\d)([^\d])", "$1;$2")
; Ein wenig Kosmetik: Führende Space entfernen, anhängende Spaces und Semikola entfernen
Line = %Line%
Line := RegExReplace(Line, ";$", "")
; Datensatz anhängen
OutText .= Line "`n"
; Line löschen, um den nächsten Datensatz aufzunehmen.
Line =
}
Else {
; Dies hier ist aktives Nichtstun. :)
; Wenn wir hier angekommen sind, endet die eingelesene Textzeile noch nicht mit
; "Mitglied". Line wird nicht gelöscht und die nächste Textzeile kann angehängt werden.
}
}
; Die Datensätze haben das Format:
; Text;Nummer;Text;Nummer ...
MsgBox %OutText%
|
| Zitat: | | Hoffentlich klappt das irgendwie | Tut es . |
|
| Nach oben |
|
 |
Ilse
Anmeldedatum: 04.08.2006 Beiträge: 149
|
Verfasst am: Sa Jul 05, 2008 10:42 am Titel: |
|
|
Hallo Chucky,
erstmal vielen vielen Dank!
Leider erhalte ich beim starten des Scripts Fehlermeldungen:
Ich habe mir die neueste Version v. AHK heruntergeladen, hat aber
auch nichts gebracht! Dann habe ich das mal mit einem Editor probiert!
Das erste mal bleibt er stehen bei:
| Code: |
Line .= A_LoopField
|
dann bei
| Code: |
OutText .= Line "`n"
|
bis zur letzen Msgbox kommt das Script leider nicht! |
|
| Nach oben |
|
 |
Chucky
Anmeldedatum: 07.01.2006 Beiträge: 616 Wohnort: Powerland
|
Verfasst am: So Jul 06, 2008 6:27 am Titel: |
|
|
| Ilse hat Folgendes geschrieben: | | Leider erhalte ich beim starten des Scripts Fehlermeldungen: | Welche denn? Hast Du das Script vielleicht verändert?
Bei mir läuft es ohne Mucken, direkt aus dem Posting kopiert und gestartet. | Zitat: | Dann habe ich das mal mit einem Editor probiert! Das erste mal bleibt er stehen bei:
| Code: | Line .= A_LoopField
|
...
|
Was hast Du mit dem Editor probiert, und wie bleibt das Script stehen?
__________________________________________
Created with BBCodeWriter 7.0 - the one and only  |
|
| Nach oben |
|
 |
Ilse
Anmeldedatum: 04.08.2006 Beiträge: 149
|
Verfasst am: So Jul 06, 2008 11:49 am Titel: |
|
|
Hallo Chucky,
ich habe den Fehler gefunden.
Es lag daran, dass der Text zu gross war.
Also habe ich den Original-Text in eine Datei abgespeichert!
(Quell.txt)
Dann habe ich probiert das ganze umzubauen mit:
| Code: |
FileRead, InText, C:\Quell.txt
|
so dass mein Kopfbereich jetzt so aussieht:
| Code: |
FileRead, InText, C:\Quell.txt
OutText =
Line =
Loop, Parse, InText, `n
{
Line .= A_LoopField.....................
...
FileAppend, %OutText%`n, C:\Ziel.txt
|
leider geht das ganze nicht!
Hast du noch einen TPP! |
|
| Nach oben |
|
 |
Chucky
Anmeldedatum: 07.01.2006 Beiträge: 616 Wohnort: Powerland
|
Verfasst am: So Jul 06, 2008 12:23 pm Titel: |
|
|
| Code: | | Loop, Parse, InText, `n, `r | Im Quelltext haben wir nur '`n' als Zeilentrenner. In einer Textdatei kommt üblicherweise noch das Carriage Return (`r bzw 0x0D) hinzu; deshalb muß es von Loop, Parse, ... ignoriert werden.
__________________________________________
Created with BBCodeWriter 7.0 - the one and only  |
|
| Nach oben |
|
 |
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|