Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  11 1959
Hei.

Har en liste med 1900 koordianter som jeg har fått av en arkitekt. Det viser seg at han har surret med dataeksporteringen. Koordiantene har 3 for mange siffer slik som:

1398867,4 -2481946,3
1400267,4 -2481238,3
1399567,4 -2481238,3
1398867,4 -2481238,3
1398017,8 -2481457,1

De skulle vært på denne formen:


1398,8674 -2481,9463
1400,2674 -2481,2383
1399,5674 -2481,2383
1398,8674 -2481,2383
1398,0178 -2481,4571

DVS flytte komma tre plasser til venstre for 1900 linjer. Jeg kan matlab og en del programmering, men har ikke noe verktøy tilgjengelig nå. Er det mulig å gjøre dette i excel wordpad etc?
Er disse koordinatene lagret i et rent tekstdokument?
Ja, så kan legge de rett inn i notepad excel wordpad etc.
Eneste jeg kan tenke meg, er å ha koordinatene lagret som ren tekst, for deretter å hente ut data vha. programmering (python, matlab etc), lagre de i arrays/lister, multiplisere alle tall med 1000, og til slutt skrive de nye tallene til fil.
Eller, for å forenkle enda mer: importer i excel, lag 2 nye kolonner som inneholder de opprinnelige kolonnenen multiplisert med 1000 (skriv =a1*1000 og dra hjørnet av cella nedover), eksporter de nye kolonnene. Voila.
Det var det jeg var ute etter! Lett! Tusen takk.
Hvorfor i det hele tatt behandle de som tall og ikke heller tekst? Bare flytt kommaet ...
Sitat av byp4ss
Hvorfor i det hele tatt behandle de som tall og ikke heller tekst? Bare flytt kommaet ...
Vis hele sitatet...
det er 1900 koordinater..
Veldig så raskt muligheten for redigering forsvant.
Jeg leste ikke at du brukte matlab.
I c++ hadde jeg bare gjort dette med alle linjene

fgets(line, 20, myFile);
strncpy(line+5, line+4, 3);
strncpy(line+16, line+15, 3);
line[4] = line[15] = ',';
fputs(line, myFixdFile);

Hvis alle har samme format, så bare send dem, så kan jeg fikse.
Sist endret av TanteSpiker; 3. september 2008 kl. 16:48.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
bypass, det er lettere for datamaskiner å behandle tall enn å behandle tekststrenger. er også lettere å utføre instruksjonen "del på 1000" enn "let gjennom strengen, finn ',' og flytt den tre plasser til venstre"
robhol: Helt ærlig, så tror jeg det er mye lettere for den å gjøre det jeg sa, enn å ta ut tallene, så gjøre dem om til floats, så dele på tusen (Deling er vel den tregeste av alle operasjonene?), for så å konvertere tilbake til symboler, og legge dem tilbake i det formatet de var i.
Sitat av robhol
bypass, det er lettere for datamaskiner å behandle tall enn å behandle tekststrenger. er også lettere å utføre instruksjonen "del på 1000" enn "let gjennom strengen, finn ',' og flytt den tre plasser til venstre"
Vis hele sitatet...
Kanskje, men når du bare skal konvertere 1900 numre, så tar det sannsynligvis under ett sekund for datamaskinen å gjøre jobben. Hadde vært mer relevant om det var 500 milliarder numre han skulle konvertere.

Forresten, Perl er utmerket for jobber som dette:

Kode

perl -p -e 's/(\d+)(\d{3}),(\d+)/$1,$2$3/g'