ASCII file 읽는 법

게시판 IDL Q&A ASCII file 읽는 법

이 게시글은 2개 답변과 2명 참여가 있으며 마지막으로  ChoiYoun에 의해 5 일, 8 시간 전에 업데이트 됐습니다.

  • 글쓴이
  • #5394

    JAEHEE
    회원

    안녕하세요 항상 도움 감사히 받고 있습니다.

    이번엔 readcol을 이용해 ASCII 파일을 읽어보려고 하는데요,
    delmiter=’-:T ‘ 이렇게 하면, 뒤의 – 부호도 함께 없어져 버리더군요.
    이 파일을 읽을 때 좋은 방법이 없을까요?

    A 2014-01-11T00:00:00.217 5124 217 -83.901 130.261 522.065 6879.061 64.5 -126 171260 3464 -1.804 10
    A 2014-01-11T00:00:00.716 5124 716 -83.872 130.372 522.063 6879.061 64.4 -126 167335 3860 -1.779 10
    A 2014-01-11T00:00:01.217 5124 1217 -83.843 130.483 522.061 6879.061 64.4 -126 169759 3036 -1.834 10
    A 2014-01-11T00:00:01.716 5124 1716 -83.814 130.593 522.058 6879.061 64.4 -127 169441 3514 -1.745 10

  • #5395

    JAEHEE
    회원

    하나만 더 질문하겠습니다.
    위의 파일을 급한대로 이렇게 읽었는데요

    readcol,infile1,iyr,mon,idm,ihr,min,sec,msec,t,longi,lat,heig,radi,sza,saa,ne1,te,scp,f, $
    delimiter=’-:T ‘,FORMAT=’XFFFFFFFFFFFFFFFFFF’,/SILENT
    scp2=-scp

    for j=0,nb0-1 do begin
    printf, r1, iyr[j],mon[j],idm[j],ihr[j],min[j],sec[j],heig[j],radi[j],ne1[j],te[j],scp2[j],f[j], $
    format='(i4,2i3,2i3,f7.2,2f9.3,2i10,f13.3,i5)’
    endfor

    실제로 코드를 돌려본면,

    % Expression must be a scalar in this context:
    <LONG64 Array[1]>.

    이러한 오류가 나옵니다.

    어떻게 해결할 수 있을까요?

  • #5396

    ChoiYoun
    회원

    안녕하세요. 첫번째 질문에 대한 답변만 달아봅니다.

    아래와 같은 방식으로 시간 부분을 문자열로 읽은 후 STRMID 함수를 이용해 분리하면 어떨까 싶습니다.

    file = ‘./test.txt’
    readcol, file, var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11, var12, var13, var14, $
    FORMAT = ‘(A, A, F, F, F, F, F, F, F, F, F, F, F, F)’

    year_arr = STRMID(var2, 0, 4)
    month_arr = STRMID(var2, 5, 2)
    day_arr = STRMID(var2, 8, 2)
    hour_arr = STRMID(var2, 11, 2)
    minute_arr = STRMID(var2, 14, 2)
    second_arr = STRMID(var2, 17, 6)

    READCOL과 같은 외장 라이브러리 프로시저를 이용하는 것 외에도 내장함수를 이용하여 읽는 방법도 있는데, 이는 이상우 박사님 블로그 글을 참조하시면 도움이 될 수 있을 것 같습니다.

    http://blog.daum.net/swrush/252(클릭)

    • 이 답변은  ChoiYoun에 의해 5 일, 8 시간 전에 수정됐습니다. 이유: FORMAT 변경

답변은 로그인 후 가능합니다.