【问题标题】:writing .txt to .csv excel columns in Python在 Python 中将 .txt 写入 .csv excel 列
【发布时间】:2017-08-17 23:25:22
【问题描述】:

我有一个包含多个列的相当大的文本文件,我必须将其转换为 15 列的 .csv 文件才能在 excel 中读取。解析我需要的字段的逻辑写在下面,但我无法将其写入 .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 模块,但解析的行写在 12 列中,我找不到在每行之后的列中写入日期和时间(单独解析)的方法 我也在查看 pandas 包,但只看到了提取模式的方法,这不适用于已建立的解析标准

有没有办法使用上述标准写入 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
 --------------------

期望的输出:只查看包含以 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

【问题讨论】:

  • 你能显示文本文件的示例行吗?
  • 是的,包括输入示例行和所需输出示例行
  • 我的错,两个都加了

标签: python excel pandas csv


【解决方案1】:

查看“pandas”包,更具体地说是 DataFrame 类。稍微聪明一点,您应该能够使用“pandas.read_table()”来读取您的表格,它会返回一个数据帧,您可以使用“to_csv()”将其输出到 csv,这实际上是一个 2 行解决方案。您需要查看文档以找到正确读取表格格式所需的参数,但应该比手动操作要容易一些。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    相关资源
    最近更新 更多