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

如何使用python将这些数据从文件中拆分为标题、艺术家、持续时间和类型,从而将其存储到列表中?,python,Python,例如Con Altura->title,ROSALIA->artist,162->duration and party->type 我有一个由标题、艺术家、持续时间和类型组成的歌曲类,但我不知道如何根据属性从文件中获取数据 Con Altura ROSALIA 162 party One Thing Right Marshmello 182 workout Te Robare Nicky Jam 202 workout Happier Marshmello 214 workout Call Y

例如Con Altura->title,ROSALIA->artist,162->duration and party->type

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

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
上面的列表是我真正想做的。基本上,在每个歌曲信息之后,我想创建一个歌曲对象,并将其存储到列表中

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"
]
我正在尝试从文件中获取数据,格式为songs=inp.readLines。然后我不知道如何根据属性分割这些。我有一个由3个属性和歌曲列表组成的播放列表类。所以,在那个末把所有的歌曲插入到我想做的事情中

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

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

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

将“文件名”、“r”作为f打开: 行=f.readlines 歌曲=[] 对于行中的行: 字段=行。拆分'\t' 歌曲 字段[0], 字段[1], 字段[2], 字段[3] 或者,如果将歌曲作为字典列表,则可以使用以下代码获取歌曲对象列表:

songObjects=[] 对于歌曲列表中的歌曲: songObjects.appendSong 宋(标题),, 宋[艺术家], 歌曲[持续时间], 歌曲[字体]
如果您想在创建过程中传递歌曲列表,则此代码可以放在播放列表的init函数中。

没有足够的代表发表评论,但我认为,如果标题和艺术家仅用一个空格分隔,python无法区分它们

playlist = Playlist("g", "h", "t", songList)
我不认识这里的艺术家可能是

Te Robare Nicky Jam


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

您需要将文本数据以逗号分隔,或将任何其他标识符分隔,以便正确导入并使其成为列表。因为,没有它,我们无法将一件事正确地划分为名字和马什梅洛直接作为艺术家。我们可以用一种简单的方法,通过检查下一个元素是否是一个数字,然后将当前元素视为艺术家的名字,但正如我所理解的CSVYes那样,这会更容易。对于这样的文件结构,似乎没有简单的方法可以做到这一点。顺便说一句,它是由字典组成的。我忘了提到它。我发现在原始文件中,属性是用tab分隔的。因此属性之间没有单一的空间。我现在怎么做?您显示的数据似乎不一致。在某些行中,标题和艺术家似乎由一个选项卡分隔,而在另一些行中则由一个空格分隔。请在您的问题中包含您想要处理的确切数据。请澄清您的问题,并提供详细的说明。看见顺便说一句,除非有充分的理由不这样做,否则变量和函数名应该在小写字母后面加下划线。是的,谢谢。但问题是,我在根据属性正确获取数据方面遇到了困难。嘿,如果你不介意的话,可以添加你以前的代码吗。谢谢,我已经从最初的回复中添加了代码。如果有帮助,请接受我的回答。我发现在原始文件中,属性是用tab分隔的。因此属性之间没有单一的空间。我现在怎么做?我建议拆分\t
title: Te Robare, artist: Nicky Jam
title: Te Robare Nicky, artist: Jam