我在解析文本文件中的CSV時遇到問題,並想知道您是否可以幫助我。到目前爲止,我有以下內容:REXX - 從CSV文件解析
CSV文件(DATA.txt)看起來像這樣,它總是會有15個字段全部用逗號分隔。並非所有字段都是強制性的,所以有些字段會被填充,有些字段是空白的
Seattle,Lastname,Firstname,DOB,SEX,etc,etc
Seattle,Lastname,Firstname,DOB,,etc,etc
Portland,Lastname,Firstname,DOB,SEX,,,etc
Portland,Lastname,Firstname,DOB,SEX,etc,etc
這裏是我的REXX代碼
SOURCEFILE = "C:\DATA\DATA.TXT"
IF A=2 THEN DO COUNTER=1 TO LINES(SOURCEFILE)
PARSE VALUE LINEIN(SOURCEFILE) WITH CITY "," LAST_NAME "," FIRST_NAME "," MOM_NAME "," MIDDLE_NAME "," DAD_NAME "," DOB "," etc "," etc "," etc "," etc "," SEX "," etc "," etc
CALL SETCURSOR 4,23
CALL CREATEDATA
END
CREATEDATA:
CALL TYPE CITY
CALL PRESS TAB
CALL TYPE LAST_NAME
CALL PRESS TAB
CALL TYPE DATE(U)
CALL PRESS TAB
CALL TYPE FIRST_NAME
CALL PRESS TAB
CALL PRESS ENTER
RETURN
我不知道我是否應該在解析時使用ARG或VAR或者,如果我寫了正確的前兩行。事實上,我知道我的CREATEDATA函數正常工作,因爲我得到了輸入的「CITY」而不是解析值。任何幫助將非常感激。謝謝!
根據Cowlishaw的Rexx的書,建在函數中的行可能返回的行數中引用的文件或,如果不能確定,「1」,其中一個非零計數將適當,否則爲'0'。我在窗口上使用ooRexx相當多,可以確認ooRexx不計算所有行,它只返回0/1。我使用以下命令一次讀取一行文件:DO WHILE LINES(filename)> 0; PARSE VALUE LINEIN(文件名)與...; END – NealB 2013-04-12 13:38:18
「Lines()」的結果與實現有關。有些實現會返回一個計數,其他實例只會返回1或0。這也是爲什麼我更喜歡加載詞幹:'Lines.0'是一個實際的計數。 – 2013-04-12 23:33:01