python - 如何使用python将大文本文件中的列拆分为3列?
问题描述
我有一个 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 vs 300;INVOKANA - 100 vs 300 mg 作为起始剂量;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("产品”,40),文件=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 --> 脚本执行
$猫输出
DOC_ID DOC_TITLE 产品
INK-MET-100 与 300 INVOKANA - 100 与 300 毫克作为起始剂量 Invokana 在此处输入图像描述 ENC-010864-13 INVOKANA PI 和 Med 指南 - 2014 年 5 月 Invokana
推荐阅读
- python - 如何为列表中的每个句子而不是整个列表创建嵌入?
- c++ - QTabView 隐藏选项卡内容但不隐藏选项卡栏
- swift - 当另一个模块在 Swift 中具有具有自己名称的类型时,引用另一个模块中与当前模块中的类型同名的类型
- python - python中什么是更好的迭代?
- dns - CentOS/RHEL 中的“_gateway”变量是什么东西?
- python - 使用终端打开时,由于导入错误,Jupyter Notebook 无法打开
- java - Java.util.zip.ZipException:在 ZipOutputStream 中使用 putNextEntry() 时条目大小无效(预期为 18401 但得到 0 个字节)?
- azure - 如何在 Service Fabric 部署期间保留有状态服务的状态?
- python - 使用带有各种列的 Pandas 数据框进行绘图
- python - PEP 8 - 通过添加空格来对齐参数