如何从python的txt文件中读取特定的列?

时间:2018-07-19 20:12:01

标签: python readfile

我有一个 .txt 数据集,如下所示:

user_000044 2009-04-24  13:47:07    Spandau Ballet  Through The Barricades 

我必须阅读最后两个专栏,《斯潘道芭蕾舞团》是独特的,《穿越街垒》是独特的。我该怎么办?

需要创建两个数组artists =[]tracks = [],在其中将数据放入循环中,但是无法定义一行中的文本部分。

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

如果文件中的列由制表符分隔,则可以使用np.loadtxt(NumPy函数),

artists, tracks = np.loadtxt("myfile.txt", delimiter = "\t", dtype = str, usecols = [ 3, 4 ], unpack = True)

这将输出一个NumPy数组。您可以选择将这些数组转换为下面的常规Python字符串列表

artists = [ str(s) for s in artists ]
tracks = [ str(s) for s in tracks ]

答案 1 :(得分:0)

使用python且没有第三方软件包的选项:

data = open('dataset.txt', 'r').readlines()

artists = []
tracks = []

for line in data:
    artist, track = line.split(' '*2)[-2::]
    artists.append(artist.strip())
    tracks.append(track.strip())

print artists
print tracks

输出:

['Spandau Ballet']
['Through The Barricades']

[-2::]获取每行的最后2列,如果需要,请调整以获取其他列。

答案 2 :(得分:0)

使用pandas模块将.txt的内容加载到熊猫DataFrame中并从那里开始可能会更好。如果您不熟悉... a DataFrame与Python一样接近Excelsheet。 pandas将为您处理代码行,因此您不必编写自己的循环。

假设您的文本文件是四列,以制表符分隔,如下所示:

# IPython for demo:
import pandas as pd

df = pd.read_csv('ballet.txt', sep='\t', header=None, names=['artists', 'tracks'], usecols=[2, 3])
# usecols here limits the Dataframe to only consist the 3rd and 4th column of your .txt

您的DataFrame如下所示:

df
# Out: 
          artists                  tracks
0  Spandau Ballet  Through The Barricades
1   Berlin Ballet               Swan Lake

按列名访问单个列:

df.artists  # or by their index e.g. df.iloc[:, 0]
# Out: 
0    Spandau Ballet
1     Berlin Ballet
Name: 2, dtype: object

此时您仍然可以将数据放入数组中,但是如果您知道其他选择,我想不出您真正想要这样做的原因。