如何使用python将这些数据从文件中拆分为标题、艺术家、持续时间和类型,从而将其存储到列表中?

2024-09-30 12:33:58 发布

您现在位置: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->;标题,罗莎莉亚->;艺术家,162->;持续时间和聚会->;类型

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

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(title, artist, duration, type)

我正试图从文件中获取数据作为songs = inp.readLines()。然后我不知道如何根据属性分割这些。我有一个由3个属性和歌曲列表组成的播放列表类。所以,在那个末把所有的歌曲插入到我想做的事情中

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

我们应该如何解决这个问题


Tags: gt列表属性titleartisttype歌曲con
2条回答

没有足够的代表发表评论,但在我看来,如果标题和艺术家之间只有一个空格,python无法区分它们

Te Robare Nicky Jam

我不认识这里的艺术家可能是

title: Te Robare, artist: Nicky Jam

title: Te Robare Nicky, artist: Jam

解决方案可以是将拆分与艺术家列表进行比较,但这会产生其他问题

如果字段由选项卡分隔,则可以如下方式获取它们:

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函数中

相关问题 更多 >

    热门问题