我正在读取的文件(row_data.csv)是以下逗号分隔的语法:
Title1,https://url1|https://url2
文件有两个字段。需要注意的一个是字段2,我正在用'|'分隔的两个元素中创建一个列表。带有此代码的字符:
f = open("row_data.csv")
csv_f = csv.reader(f)
for row in csv_f:
desktop_images_link = row[1]
desktop_images = desktop_images_link.split('|')
for x in desktop_images:
myitem["Item"]["PictureDetails"]["PictureURL"][0].append(x)
我一直没有成功地将此列表迁移到以下字典中:
myitem = {
"Item": {
"Title": "{}".format(item_title),
"PictureDetails": {
"GalleryType": "Gallery",
"PictureURL": []
我尝试将字典修改为类似于“ PictureURL”:[]的方法。
我也尝试过修改for循环中的语法,在其中添加列表的值,但是我无法使其正常工作。
所有帮助都超过了赞赏。
JSON应该表示的输出如下:
"PictureURL": [
"https://url1",
"https://url2"
]
答案 0 :(得分:2)
如果在创建字典PictureURL
时将[]
初始化为字典内的myItem
,则下面的语句:
myitem["Item"]["PictureDetails"]["PictureURL"][0].append(x)
应该是
myitem["Item"]["PictureDetails"]["PictureURL"].append(x)
如果PictureURL
是列表,只需追加到列表,[0]
就会尝试追加到列表的第一个元素,而不是您想要的。
您还可以使用列表理解功能,如下所示:
f = open("row_data.csv")
csv_f = csv.reader(f)
for row in csv_f:
desktop_images_link = row[1]
desktop_images = desktop_images_link.split('|')
myitem["Item"]["PictureDetails"]["PictureURL"].extend([x for x in desktop_images])
答案 1 :(得分:1)
首先,您需要初始化myitem并将PictureURL设置为空列表。那么您可以将网址添加到该列表中
f = open("data/row_data.csv")
csv_f = csv.reader(f)
for row in csv_f:
desktop_images_link = row[1]
desktop_images = desktop_images_link.split('|')
myitem = {
"Item": {
"Title": "{}".format(row[0]),
"PictureDetails": {
"GalleryType": "Gallery",
"PictureURL": []
}
}
}
for x in desktop_images:
myitem["Item"]["PictureDetails"]["PictureURL"].append(x)
print(myitem)