Deutsches AutoHotkey Homepage AutoHotkey Community
Wir helfen uns gegenseitig aus der Patsche
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Hilfe Text bearbeiten

 
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe!
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Ilse



Anmeldedatum: 04.08.2006
Beiträge: 149

BeitragVerfasst am: Do Jul 03, 2008 3:08 pm    Titel: Hilfe Text bearbeiten Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
denick (n-l-i)
Gast





BeitragVerfasst am: Do Jul 03, 2008 3:20 pm    Titel: Antworten mit Zitat

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.

Wink
Nach oben
Hasso



Anmeldedatum: 17.11.2005
Beiträge: 94
Wohnort: Hamburg

BeitragVerfasst am: Do Jul 03, 2008 3:44 pm    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Ilse



Anmeldedatum: 04.08.2006
Beiträge: 149

BeitragVerfasst am: Do Jul 03, 2008 4:08 pm    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
AGU
Gast





BeitragVerfasst am: Do Jul 03, 2008 4:31 pm    Titel: Antworten mit Zitat

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

BeitragVerfasst am: Do Jul 03, 2008 5:12 pm    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Chucky



Anmeldedatum: 07.01.2006
Beiträge: 616
Wohnort: Powerland

BeitragVerfasst am: Fr Jul 04, 2008 12:23 am    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Ilse



Anmeldedatum: 04.08.2006
Beiträge: 149

BeitragVerfasst am: Fr Jul 04, 2008 8:13 am    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Chucky



Anmeldedatum: 07.01.2006
Beiträge: 616
Wohnort: Powerland

BeitragVerfasst am: Sa Jul 05, 2008 7:35 am    Titel: Antworten mit Zitat

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 Very Happy .
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Ilse



Anmeldedatum: 04.08.2006
Beiträge: 149

BeitragVerfasst am: Sa Jul 05, 2008 10:42 am    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Chucky



Anmeldedatum: 07.01.2006
Beiträge: 616
Wohnort: Powerland

BeitragVerfasst am: So Jul 06, 2008 6:27 am    Titel: Antworten mit Zitat

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

...
Question Was hast Du mit dem Editor probiert, und wie bleibt das Script stehen?
__________________________________________
Created with BBCodeWriter 7.0 - the one and only Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Ilse



Anmeldedatum: 04.08.2006
Beiträge: 149

BeitragVerfasst am: So Jul 06, 2008 11:49 am    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Chucky



Anmeldedatum: 07.01.2006
Beiträge: 616
Wohnort: Powerland

BeitragVerfasst am: So Jul 06, 2008 12:23 pm    Titel: Antworten mit Zitat

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 Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Ich brauche Hilfe! Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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