Re: Writing formatted text files [message #18885] |
Fri, 11 February 2000 00:00 |
John-David T. Smith
Messages: 384 Registered: January 2000
|
Senior Member |
|
|
Liam Gumley wrote:
>
> Bernard Puc <bpuc@va.aetc.com> wrote in message
> news:38A47BCA.884D0CC@va.aetc.com...
>> I'd like to speed-up the following code. I'm writing comma delimited
>> text files, I'm eliminating whitespace by using strtrim, and am
>> explicitly formatting the string using a format keyword. Any ideas how
>> to improve this? I've been playing with various ways of formatting
>> without using a FOR loop but either don't get the desired output or the
>> error message telling me the output string has been truncated to 1024
>> lines.
>>
>> data_to_write = fltarr(3, 100000)
>> FOR j=0, 99999 DO BEGIN
>> PRINTF,Lun,$
>> strtrim(string(data_to_write[0,j],format='(f10.3)'),2),',',$
>> strtrim(string(data_to_write[1,j],format='(f10.3)'),2),',',$
>> strtrim(string(data_to_write[2,j],format='(f10.3)'),2),$
>> FORMAT = "(a,a,a,a,a)"
>> ENDFOR
>>
>> Output should look like this:
>>
>> 278.980,-232.018,258.090
>> 278.926,-231.974,258.360
>> 278.889,-231.944,241.240
>> 278.852,-231.913,206.900
>> 278.814,-231.883,156.390
>> 278.776,-231.852,93.680
>> 278.739,-231.821,27.799
>> 278.702,-231.791,-33.771
>> 278.664,-231.760,-84.551
>> 278.626,-231.729,-121.161
>
> This doesn't get rid of all the whitespace, but it's simple and quick, and
> the output is easy to read:
>
> arr = findgen(3, 1000) * 0.1
> print, arr, format='(2(f8.3, ","),f8.3)'
>
Try
print,FORMAT='(2(f0, ","),f0)',arr
It eliminates the whitespace, although you can't control the precision generated
(6 digits after the decimal, by default). This "natural width" format isn't
documented.
JD
--
J.D. Smith |*| WORK: (607) 255-5842
Cornell University Dept. of Astronomy |*| (607) 255-6263
304 Space Sciences Bldg. |*| FAX: (607) 255-5875
Ithaca, NY 14853 |*|
|
|
|
Re: Writing formatted text files [message #18889 is a reply to message #18885] |
Fri, 11 February 2000 00:00  |
Liam E. Gumley
Messages: 378 Registered: January 2000
|
Senior Member |
|
|
Bernard Puc <bpuc@va.aetc.com> wrote in message
news:38A47BCA.884D0CC@va.aetc.com...
> I'd like to speed-up the following code. I'm writing comma delimited
> text files, I'm eliminating whitespace by using strtrim, and am
> explicitly formatting the string using a format keyword. Any ideas how
> to improve this? I've been playing with various ways of formatting
> without using a FOR loop but either don't get the desired output or the
> error message telling me the output string has been truncated to 1024
> lines.
>
> data_to_write = fltarr(3, 100000)
> FOR j=0, 99999 DO BEGIN
> PRINTF,Lun,$
> strtrim(string(data_to_write[0,j],format='(f10.3)'),2),',',$
> strtrim(string(data_to_write[1,j],format='(f10.3)'),2),',',$
> strtrim(string(data_to_write[2,j],format='(f10.3)'),2),$
> FORMAT = "(a,a,a,a,a)"
> ENDFOR
>
> Output should look like this:
>
> 278.980,-232.018,258.090
> 278.926,-231.974,258.360
> 278.889,-231.944,241.240
> 278.852,-231.913,206.900
> 278.814,-231.883,156.390
> 278.776,-231.852,93.680
> 278.739,-231.821,27.799
> 278.702,-231.791,-33.771
> 278.664,-231.760,-84.551
> 278.626,-231.729,-121.161
This doesn't get rid of all the whitespace, but it's simple and quick, and
the output is easy to read:
arr = findgen(3, 1000) * 0.1
print, arr, format='(2(f8.3, ","),f8.3)'
Cheers,
Liam.
http://cimss.ssec.wisc.edu/~gumley
|
|
|