2017-08-17 96 views
0

我有一個帶有多列的相當大的文本文件,我必須將其轉換爲15列.csv文件才能在Excel中讀取。解析我需要的字段的邏輯在下面寫出,但我無法將其寫入.csv。將.txt寫入.csv Excel中的excel列

columns = [ 'TRANSACTN_NBR', 'RECORD_NBR', 
     'SEQUENCE_OR_PIC_NBR', 'CR_DB', 'RT_NBR', 'ACCOUNT_NBR', 
     'RSN_COD', 'ITEM_AMOUNT', 'ITEM_SERIAL', 'CHN_IND', 
     'REASON_DESCR', 'SEQ2', 'ARCHIVE_DATE', 'ARCHIVE_TIME', 'ON_US_IND' ] 

    for line in in_file: 
     values = line.split() 
     if 'PRINT DATE:' in line: 
      dtevalue = line.split(a,1)[-1].split(b)[0] 
      lines.append(dtevalue) 

     elif 'PRINT TIME:' in line: 
      timevalue = line.split(c,1)[-1].split(b)[0] 
      lines.append(timevalue) 

     elif (len(values) >= 4 and values[3] == 'C' 
      and len(values[2]) >= 2 and values[2][:2] == '41'): 
      print(values) 

     elif (len(values) >= 4 and values[3] == 'D' 
      and values[4] in rtnbr): 
      on_us = '1' 
     else: 
      on_us = '0' 

print (lines[0]) 
print (lines[1]) 

我已經原審csv模塊,但分析行寫在12列,我無法找到一種方法,每一行 我也寫好後列中的日期和時間(分別解析)看熊貓軟件包,但只能看到方式來提取模式,這將不符合已建立的解析標準

有沒有辦法使用上述標準寫入csv?或者我必須取消它並在特定的包中重寫代碼? 任何幫助理解

編輯:文本文件樣品:

* START ******************************************************************************************************************** START * 
* START ******************************************************************************************************************** START * 
* START ******************************************************************************************************************** START * 
1-------------------- 
1ANTECR09             CHEK             DPCK_R_009 
                TRANSIT EXTRACT SUB-SYSTEM 
    CURRENT DATE = 08/03/2017        JOURNAL  REPORT            PAGE 1 
    PROCESS DATE = 
ID = 022000046-MNT                  
    FILE HEADER = H080320171115          
+____________________________________________________________________________________________________________________________________ 
    R    T  SEQUENCE CR  BT    A RSN    ITEM   ITEM CHN   USER REASO 
     NBR  NBR  OR PIC NBR DB  NBR    NBR COD    AMOUNT   SERIAL IND .......FIELD.. DESCR 
     5,556  01  7450282689 C 538196640  9835177743 15   $9,064.81    00     CREDIT 
     5,557  01  7450282690 D 031301422   362313705 38   $592.35   43431     DR CR 
     5,558  01  7450282691 D 021309379   601298839 38   $1,491.04   44896     DR CR 
     5,559  01  7450282692 D 071108834   176885 38   $6,688.00   1454     DR CR 
     5,560  01  7450282693 D 031309123  1390001566241 38   $293.42   6878     DR CR 

-------------------- 
    34,615  207  4100223726 C 538196620  9866597322 10   $645.49    00     CREDIT 
    34,616  207  4100223727 D 022000046  8891636675 31   $645.49   111583     DR ON- 
-------------------- 
    34,617  208  4100223728 C 538196620   11701364 10   $756.19    00     CREDIT 
    34,618  208  4100223729 D 071923828    00 54   $305.31  11384597     BAD AC 
    34,619  208  4100223730 D 071923828   35110011 30   $450.88  10913052 6     DR SEL 
-------------------- 

希望的輸出:在看只含SEQ開始與42線,含有C

1293 83834 4100225908 C 538196620 9860890913 10 161.5 0  CREDIT 41 3-Aug-17 11:15:51 
1294 83838 4100225911 C 538196620 25715845 10 138 0  CREDIT 41 3-Aug-17 11:15:51 
+0

你可以顯示文本文件的示例行嗎? – brunston

+0

是的,包括一個輸入示例行和一個想要的輸出示例行 – maxymoo

+0

我的不好,添加了兩個 – mcclayjr01

回答

1

看那'大熊貓包,更具體地說類DataFrame。有一點巧妙,你應該可以使用'pandas.read_table()'讀取你的表格,它可以返回一個數據幀,你可以使用'to_csv()'輸出到csv有效的2線解決方案。您需要查看文檔以查找需要正確讀取表格格式的參數,但應該比手動操作更容易一些。