将.txt写入Python中的.csv excel列

我有一个相当大的文本文件与多列,我必须转换为15列.csv文件在Excel中读取。 parsing我需要的字段的逻辑写在下面,但是我很难写入.csv。

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模块,但parsing的行被写入12列,我无法find一种方式来编写date和时间(分别单独parsing)后,每行我也看pandas包,但只有看到了提取模式的方法,这些模式不适用于已build立的parsing标准

有没有办法使用上述标准写入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 +____________________________________________________________________________________________________________________________________ RT 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开始的seq的行,包含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 

看看“pandas”软件包,更具体的说是DataFrame类。 有一点聪明,你应该可以使用'pandas.read_table()'来读取你的表格,它可以返回一个dataframe,你可以使用'to_csv()'输出到csv。 您需要查看文档以find正确读取表格格式所需的参数,但应该比手动操作要简单一些。