簡體   English   中英

如何使用python將大文本文件中的列拆分為3列?

[英]How to split column into 3 column in large text file using python?

我有一個 1 GB 的文件。 我想閱讀它並將一列分成 3 個單獨的列。

有一列 - COMPONENT_IDS ,我需要把它分成三個新的列 - DOC_ID, DOC_TITLE, PROD

例子:

We have to split COMPONENT_IDS  into 3 columns (DOC_ID, DOC_TITLE, PROD) use ; as seperator. For a "##" seperator, it should come as multiple records
For example INK-MET-100 vs 300;INVOKANA - 100 vs 300 mg as a Starting Dose;Invokana##ENC-010864-13;INVOKANA PI and Med Guide - May 2014;Invokana

COMPONENT_IDS
INK-MET-100 vs 300;INVOKANA - 100 vs 300 mg as a Starting Dose;Invokana
ENC-010864-13;INVOKANA PI and Med Guide - May 2014;Invokana

DOC_ID                DOC_TITLE                                     PROD
INK-MET-100 vs 300    INVOKANA - 100 vs 300 mg as a Starting Dose   Invokana
ENC-010864-13         INVOKANA PI and Med Guide - May 2014          Invokana

下面的 Python 腳本可能會幫助你。 您可以根據需要更改 "format("DOC_ID", 40)" 等的整數值 40。 下面的腳本正在讀取您的數據文件並將其轉換為 3 列並將其重定向到您的輸出文件。 通過在這里使用循環,我們可以避免高內存利用率問題。

$ cat test --> 原始文件

COMPONENT_IDS

INK-MET-100 與 300 對比;INVOKANA - 100 與 300 毫克作為起始劑量;Invokana

ENC-010864-13;INVOKANA PI 和 Med 指南 - 2014 年 5 月;Invokana

$ cat test.py --> Python 腳本

將熊貓導入為 pd

fopen=open('test') # 原始文件

fout=open('output','w') # 輸出文件

print('{: <{}}'.format("DOC_ID", 40),'{: <{}}'.format("DOC_TITLE", 60),'{: <{}}'.format(" PROD", 40),file=fout)

因為我在 fopen:

    if i.startswith('COMPONENT_IDS'):

           continue

    else:

            (DOC_ID, DOC_TITLE, PROD)=tuple(i.strip().split(';'))

            print('{: <{}}'.format(DOC_ID, 40),'{: <{}}'.format(DOC_TITLE, 60),'{: <{}}'.format(PROD, 40),file=fout)

$ python3 test.py --> 腳本執行

$ cat 輸出

DOC_ID DOC_TITLE PROD

INK-MET-100 與 300 INVOKANA - 100 與 300 mg 作為起始劑量 Invokana在此處輸入圖像描述ENC-010864-13 INVOKANA PI 和 Med 指南 - 2014 年 5 月 Invokana

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM