【发布时间】:2019-11-26 04:44:54
【问题描述】:
我有一个文件,其中包含广播电台最近播放的歌曲、艺术家和播放时间,格式如下:“November 4, 2019 8:02 PM”、“Wagon Wheel”、“Darius Rucker”。我试图将此文件的内容存储在字符串变量 playlist_csv 中,使用 splitlines() 将记录存储在变量行中,然后遍历这些行以将数据存储在字典中。键应该是时间戳的日期时间对象,值应该是歌曲和艺术家的元组:{datetime_key: (song, artist)}
这是文件的摘录:
"November 4, 2019 8:02 PM","Wagon Wheel","Darius Rucker"
"November 4, 2019 7:59 PM","Remember You Young","Thomas Rhett"
"November 4, 2019 7:55 PM","Long Hot Summer","Keith Urban"
这是所需字典的外观:
{datetime.datetime(2019, 11, 4, 20, 2): ('Wagon Wheel', 'Darius Rucker'),
datetime.datetime(2019, 11, 4, 19, 59): ('Remember You Young', 'Thomas Rhett'),
datetime.datetime(2019, 11, 4, 19, 55): ('Long Hot Summer', 'Keith Urban')}
这是我目前所拥有的代码:
# read the file and store content in string variable playlist_csv
with open('playlist.txt', 'r') as csv_file:
playlist_csv = csv_file.read().replace('\n', '')
# use splitlines() method to store records in variable lines (it is list)
split_playlist = playlist_csv.splitlines()
# iterate through lines to store data in playlist_dict dictionary
playlist_dict = {}
for l in csv.reader(split_playlist, quotechar='"', delimiter=',',
quoting=csv.QUOTE_ALL, skipinitialspace=True):
dt=datetime.strptime(l[0], '%B %d, %Y %I:%M %p')
playlist_dict[l[dt]].append(dt)
print(playlist_dict)
但是,在尝试将这些数据存储在字典中时,我一直遇到错误(特别是在修改代码时“'datetime.datetime' 对象不可下标”和“列表索引必须是整数或切片”)。
感谢您的帮助!
【问题讨论】:
-
你到底在哪里得到错误?
-
@Stuart 在这一行:playlist_dict[l[dt]].append(dt)
-
@ggorlen 刚刚做了,对此感到抱歉。
-
谢谢,看起来不错。此文件是否有 CSV 标题或只有行?
-
@ggorlen 只是行
标签: python dictionary python-3.6