2017-08-17 11 views
0

私は15列の.csvファイルに変換する必要がある複数の列を持つかなり大きなテキストファイルをExcelで読み込むようにしています。必要なフィールドを解析するロジックは以下のとおりですが、.csvに書き込むのに問題があります。.txtを.csvに書き出すPythonの列を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]) 

Iはもともとcsvモジュールを試みたが、解析された行は12列に書かれていると私もあった各行 後列の日付と時刻(別々に解析された)を書き込むための方法を見つけることができませんでしpandasパッケージを見ても、パターンを抽出する方法しか見ていません。これは、確立された解析基準では機能しません。

上記の基準を使用してcsvに書き込む方法はありますか?または、特定のパッケージ内のコードを取り除いてコードを書き直す必要がありますか? すべてのヘルプは高く評価され

EDIT:テキストファイルのサンプル:

* 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 
-------------------- 

所望の出力は:42から始まる配列を含む行だけを見て、 'パンダ' で

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

ルックCが含まれていますパッケージ、より具体的にはDataFrameクラスです。ちょっとした賢さで、あなたは 'to_csv()'を使ってCSVに出力できるデータフレームを返す 'pandas.read_table()'を使ってテーブルを読むことができなければなりません。テーブルフォーマットを正しく読み込むために必要なパラメータを見つけるためには、ドキュメントを調べる必要がありますが、手動で行うよりは簡単です。

関連する問題