我有一个 .txt 数据集,如下所示:
user_000044 2009-04-24 13:47:07 Spandau Ballet Through The Barricades
我必须阅读最后两个专栏,《斯潘道芭蕾舞团》是独特的,《穿越街垒》是独特的。我该怎么办?
需要创建两个数组artists =[]
和tracks = []
,在其中将数据放入循环中,但是无法定义一行中的文本部分。
有人可以帮助我吗?
答案 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
此时您仍然可以将数据放入数组中,但是如果您知道其他选择,我想不出您真正想要这样做的原因。