Hallo,
so ginge es :
Split[
ReadList["test.txt",{String}, RecordSeparators -> {"\n"}] /.
s_String :> Apply[Sequence, If[StringMatchQ[s, "*segment*"],
ReadList[StringToStream[s], {Word,Number,Word,Number,Word,Number},
WordSeparators -> {" ","\t"}][[1]],
ReadList[StringToStream[s], Number, WordSeparators ->
{" ","\t"}]] ] ,
(#1[[1]] =!= "segment" && #2[[1]] =!= "segment")&] //.
{a___, {{"segment",s__}}, {n:{_, _}..}, b___} :> {a, {{"segment",s}, n}, b}
Gruß,
Rolf Mertig
GluonVision GmbH
Berlin
Am Donnerstag, 26. Mai 2005 22:31 schrieb klamser:
> Hallo,
>
> ich habe eine Datei, die enthält z.B. die folgenden Daten:
>
> segment 1 rank 1 points 7
> 31.646944 25.151389
> 31.646111 25.148056
> 31.643056 25.143333
> 31.640278 25.138889
> 31.637222 25.134167
> 31.634444 25.129722
> 31.630833 25.125833
> segment 2 rank 1 points 8
> 31.646944 25.151389
> 31.646111 25.148056
> 31.643056 25.143333
> 31.640278 25.138889
> 31.637222 25.134167
> 31.634444 25.129722
> 31.630833 25.125833
> 31.630833 25.125833
> ..
>
> Die hätte ich gerne in der Form:
>
> {{{segment, 1, rank, 1, points, 7},
> {31.646944, 25.151389},
> .},
> {{segment, 1, rank, 1, points, 7},
> {31.646944, 25.151389}
> .},..}
>
> Die würde ich gerne mit Readlsit einlesen:
>
> ReadList["D:\\0\\test.txt",{String},WordSeparators\[Rule]{" ","\t"},
> RecordSeparators\[Rule]{"\[Backslash]n"},RecordLists\[Rule]True]
>
> liefert nicht das gewünschte Ergebnis.
>
> Besser wäre
>
> ReadList["D:\\0\\test.txt",{{String,Number,String,Number,String,
> Number}, {Number,Number},..},WordSeparators\[Rule]{" ","\t"},
> RecordSeparators\[Rule]{"\[Backslash]n"},RecordLists\[Rule]True]
>
> denkt der Laie, aber es hagelt Fehlermeldungen, denn den Repeated
> Operator mag MMA nicht bei dem Format von ReadList.
>
> Gruß,
>
> Peter Klamser