【发布时间】:2016-08-05 01:15:51
【问题描述】:
我试图遍历一个对象列表,从每个对象中删除一个元素。每个对象都是一个新行。我正在尝试按原样保存新文件,而不包含对象中的元素。我知道这可能是一项简单的任务,但我似乎无法完成这项工作。如果有人可以伸出援助之手,将不胜感激。谢谢。
{
"business_id": "fNGIbpazjTRdXgwRY_NIXA",
"full_address": "1201 Washington Ave\nCarnegie, PA 15106",
"hours": {
"Monday": {
"close": "23:00",
"open": "11:00"
},
"Tuesday": {
"close": "23:00",
"open": "11:00"
},
"Friday": {
"close": "23:00",
"open": "11:00"
},
"Wednesday": {
"close": "23:00",
"open": "11:00"
},
"Thursday": {
"close": "23:00",
"open": "11:00"
},
"Saturday": {
"close": "23:00",
"open": "11:00"
}
},
"open": true,
"categories": ["Bars", "American (Traditional)", "Nightlife", "Lounges", "Restaurants"],
"city": "Carnegie",
"review_count": 7,
"name": "Rocky's Lounge",
"neighborhoods": [],
"longitude": -80.0849416,
"state": "PA",
"stars": 4.0,
"latitude": 40.3964688,
"attributes": {
"Alcohol": "full_bar",
"Noise Level": "average",
"Music": {
"dj": false
},
"Attire": "casual",
"Ambience": {
"romantic": false,
"intimate": false,
"touristy": false,
"hipster": false,
"divey": false,
"classy": false,
"trendy": false,
"upscale": false,
"casual": false
},
"Good for Kids": true,
"Wheelchair Accessible": true,
"Good For Dancing": false,
"Delivery": false,
"Dogs Allowed": false,
"Coat Check": false,
"Smoking": "no",
"Accepts Credit Cards": true,
"Take-out": true,
"Price Range": 1,
"Outdoor Seating": false,
"Takes Reservations": false,
"Waiter Service": true,
"Wi-Fi": "free",
"Caters": false,
"Good For": {
"dessert": false,
"latenight": false,
"lunch": false,
"dinner": false,
"brunch": false,
"breakfast": false
},
"Parking": {
"garage": false,
"street": false,
"validated": false,
"lot": true,
"valet": false
},
"Has TV": true,
"Good For Groups": true
},
"type": "business"
}
我需要删除 hours 元素中包含的信息,但信息并不总是相同的。有些包含所有的日子,有些只包含一两天的信息。我尝试使用的代码是 Pyton,我全天都在搜索它以解决我的问题。我对 Python 不是很熟练。任何帮助,将不胜感激。
import json
with open('data.json') as data_file:
data = json.load(data_file)
for element in data:
del element['hours']
对不起,只是添加我在运行代码时遇到的错误是 TypeError: 'unicode' 对象不支持删除项目
【问题讨论】:
-
是否要删除所有小时键和值? (days,close,open) 还是其中的某个字段?
-
嗨 Ic123,是的,我想删除里面的所有数据,包括小时元素,这样它就不再可见了。我有一个包含 20,000 个对象的列表,每次我需要尝试循环并删除“小时”以及整个文件中此元素内的所有内容时,这些对象都会从新行开始。我需要将结果写入新文件输出吗?还是代码应该编辑当前文件?任何方向将不胜感激。
-
嗨@Bradley 在您删除@Apero 建议的
hour键后,您需要将结果写入新文件甚至覆盖旧文件。否则您的文件将不会“知道”您的更改 -
file = open("newfile.json", "w") file.write(data) 这样的事情似乎不起作用。对不起,如果我遇到这个懒惰。我实际上是在尝试修改要在 Pig 中使用的文件,因为我根本无法让大象鸟 jar 文件工作。我只能使用 JSON 文件中的一个缩进来喂猪。我实际上不知道如何使用 Python,但整天都在努力寻找可以用来操作我的 JSON 文件的东西。谢谢@Ic123
标签: python jsonobject