首页 > 解决方案 > 如何通过使用 python 从文件中将这些数据拆分为标题、艺术家、持续时间和类型来将这些数据存储到列表中?

问题描述

Con Altura  ROSALIA 162 party
One Thing Right Marshmello 182 workout
Te Robare Nicky Jam 202 workout
Happier Marshmello 214 workout
Call You Mine The Chainsmokers 218  relax
Cross Me (feat. Chance the Rapper & PnB Rock) Ed Sheeran 206 relax

例如 Con Altura-> 标题,ROSALIA -> 艺术家,162 -> 持续时间和派对 -> 类型。

我有一个 Song 类,由标题、艺术家、持续时间和类型组成,但我不知道如何根据属性从文件中获取数据。

songList = [
    "title" : "Te Robare Nicky", "artist" : "Jam", "duration" : 202, "type" : "workout",
    "title" : "x", "artist" : "y", "duration" : z, "type" : "t",
    "title" : "a", "artist" : "b", "duration" : c, "type" : "d"
]

上面的列表是我实际上想要做的。基本上在每首歌曲信息之后,我都想创建一个 Song 对象,将其存储到列表中。

song = Song(title, artist, duration, type)

我正在尝试从文件中获取数据为songs = inp.readLines(). 然后我不知道该怎么做才能根据属性拆分这些。我有一个由 3 个属性和歌曲列表组成的播放列表类。因此,在将所有歌曲插入到我想要做的最后

playlist = Playlist("g", "h", "t", songList)

应该如何解决这个问题?

标签: python

解决方案


如果字段由制表符分隔,您可以像这样获取它们:

with open('filename', 'r') as f:
    lines = f.readlines()
    songs = []
    for line in lines:
        fields = line.split('\t')
        songs.append(Song(
            fields[0],
            fields[1],
            fields[2],
            fields[3]
        ))

或者,如果您将歌曲作为字典列表,则可以使用以下代码获取歌曲对象列表:

songObjects = []
for song in songList:
    songObjects.append(Song(
        song["title"],
        song["artist"],
        song["duration"],
        song["type"]
    ))

如果您想在创建期间传递歌曲列表,则此代码可以放在播放列表的init函数中。


推荐阅读