首页 > 解决方案 > Python 2.7:读取一个 txt 文件,从右侧拆分和分组数列

问题描述

由于txt文件有一些缺陷,.txt文件需要从右边拆分。下面是文件的一部分。请注意,第一行只有 4 列,而另一行有 5 列。我想要右边第 2、3、4 列的数据

5123 - SENTRAL REIT - SENTA.KL - [$SENT]
KIPT - 5280 - KIP REAL EST - KIPRA.KL - [$KIPR]
ALIT - 5269 - AL-SALAM REAL - ALSAA.KL - [$ALSA]
KLCC - 5235SS - KLCC PROP - KLCCA.KL - [$KLCC]
IGBgggREIT - 5227 - IGB RT - IGREA.KL - [$IGRE]
SUNEIT - 5176 - SUNWAY RT - SUNWA.KL - [$SUNW]
ALA78QAR - 5116 - AL-AQAR HEA RT - ALQAA.KL - [$ALQA]

我希望将文件保存在 .csv 中,以后可以由 pandas 读取所需的输出是

Code,Company,RIC
5123,SENTRAL REIT,SENTA.KL 
5280,KIP REAL EST, KIPRA.KL
5269,AL-SALAM REAL,ALSAA.KL
5235SS,KLCC PROP,KLCCA.KL 
5227,IGB RT,IGREA.KL
5176,SUNWAY RT,SUNWA.KL
5116,AL-AQAR HEA RT,ALQAA.KL

我的代码如下

>>> with open('abc.txt', 'r') as reader:
>>>     [x for x in reader.read().strip().split(' - ') if x]

它返回一个列表,由于列表的缺陷,我无法将其分组到右列(如果从左侧开始计算,某些行中的列不相等)

请告知如何获得所需的输出

标签: python-2.7txt

解决方案


这应该可以解决问题:)

import pandas as pd

with open('abc.txt', 'r') as reader:
    data = [line.split(' - ')[-4:-1] for line in reader.readlines()]

df = pd.DataFrame(columns=['Code', 'Company', 'RIC'], data=data)
df.to_csv('abc.csv', sep=',', index=0)

推荐阅读