我将JSON数据存储在变量中data.
我想将其写入文本文件进行测试,因此我不必每次都从服务器获取数据.
目前,我正在尝试这个:
obj = open('data.txt', 'wb')
obj.write(data)
obj.close
Run Code Online (Sandbox Code Playgroud)
我收到错误:
TypeError: must be string or buffer, not dict
如何解决这个问题?
我有点头疼,因为一个简单的外观,简单的陈述在我脸上抛出一些错误.
我有一个名为strings.json的json文件,如下所示:
"strings": [{"-name": "city", "#text": "City"}, {"-name": "phone", "#text": "Phone"}, ...,
{"-name": "address", "#text": "Address"}]
Run Code Online (Sandbox Code Playgroud)
我现在想读取json文件.我发现了这些陈述,但它不起作用:
import json
from pprint import pprint
with open('strings.json') as json_data:
d = json.load(json_data)
json_data.close()
pprint(d)
Run Code Online (Sandbox Code Playgroud)
控制台上显示的错误是:
Traceback (most recent call last):
File "/home/.../android/values/manipulate_json.py", line 5, in <module>
d = json.loads(json_data)
File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TypeError: expected string or buffer
[Finished in 0.1s with exit code 1]
Run Code Online (Sandbox Code Playgroud)
编辑 …
在Python中我收到一个错误:
Exception: (<type 'exceptions.AttributeError'>,
AttributeError("'str' object has no attribute 'read'",), <traceback object at 0x1543ab8>)
Run Code Online (Sandbox Code Playgroud)
给出python代码:
def getEntries (self, sub):
url = 'http://www.reddit.com/'
if (sub != ''):
url += 'r/' + sub
request = urllib2.Request (url +
'.json', None, {'User-Agent' : 'Reddit desktop client by /user/RobinJ1995/'})
response = urllib2.urlopen (request)
jsonofabitch = response.read ()
return json.load (jsonofabitch)['data']['children']
Run Code Online (Sandbox Code Playgroud)
这个错误意味着什么,我做了什么导致它?
我有一个Json文件如下.这是一个dicts列表.
[{"city": "ab", "trips": 4, "date": "2014-01-25", "value": 4.7, "price": 1.1, "request_date": "2014-06-17", "medium": "iPhone", "%price": 15.4, "type": true, "Weekly_pct": 46.2, "avg_dist": 3.67, "avg_price": 5.0}, {"city": "bc", "trips": 0, "date": "2014-01-29", "value": 5.0, "price": 1.0, "request_date": "2014-05-05", "medium": "Android", "%price": 0.0, "type": false, "weekly_pct": 50.0, "avg_dist": 8.26, "avg_price": 5.0}.....]
Run Code Online (Sandbox Code Playgroud)
当我用这个读到这个:
data=pd.read_json('dataset.json')
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ValueError:预期的对象或值
我也试过这个:
from ast import literal_eval
with open('dataset.json') as f:
data = literal_eval(f.read())
df = pd.DataFrame(data)
Run Code Online (Sandbox Code Playgroud)
它给出以下错误:
ValueError:格式错误的字符串
编辑:
即使Json.loads也行不通.试过这个:
import json
data=json.loads('dataset.json')
Run Code Online (Sandbox Code Playgroud)
ValueError:无法解码JSON对象
Json文件是13.5MB,但它似乎有大量的数据.
我有一个标准的嵌套json文件,如下所示:它们是多层嵌套的,我必须通过创建新对象来消除所有嵌套.
嵌套的json文件.
{
"persons": [{
"id": "f4d322fa8f552",
"address": {
"building": "710",
"coord": "[123, 465]",
"street": "Avenue Road",
"zipcode": "12345"
},
"cuisine": "Chinese",
"grades": [{
"date": "2013-03-03T00:00:00.000Z",
"grade": "B",
"score": {
"x": 3,
"y": 2
}
}, {
"date": "2012-11-23T00:00:00.000Z",
"grade": "C",
"score": {
"x": 1,
"y": 22
}
}],
"name": "Shash"
}]
}
Run Code Online (Sandbox Code Playgroud)
需要创建的新对象
persons
[
{
"id": "f4d322fa8f552",
"cuisine": "Chinese",
"name": "Shash"
}
]
persons_address
[
{
"id": "f4d322fa8f552",
"building": "710",
"coord": "[123, 465]",
"street": "Avenue Road",
"zipcode": "12345" …Run Code Online (Sandbox Code Playgroud) 我有一个 json 文件,我在 python 中用作字典。json 文件真的很长,有 10k+ 条记录。我需要用“id”的值替换“iscategorical”中的 $home 部分。进行更改后,我想保存此文件,以便我可以再次将其用作字典。感谢您的帮助。这是一个示例:
{
"maps": [
{
"id": "xyzp",
"iscategorical": "/u/$home/app/home"
},
{
"id": "trtn",
"iscategorical": "/u/app/$home/user"
}
]}
Run Code Online (Sandbox Code Playgroud) 我正在解析包含 json 对象的文件。问题是某些文件在一行中有多个对象。例如:
{"data1": {"data1_inside": "bla{bl\"a"}}{"data1": {"data1_inside": "blabla["}}{"data1": {"data1_inside": "bla{bla"}}{"data1": {"data1_inside": "bla["}}
Run Code Online (Sandbox Code Playgroud)
我制作了一个函数,当没有左括号时尝试解析子字符串,但值中可能有大括号。我尝试通过检查引号的开头和结尾来跳过值,但也有带有转义引号的值。关于如何处理这个问题的任何想法?
我的尝试:
def get_lines(data):
lines = []
open_brackets = 0
start = 0
is_comment = False
for index, c in enumerate(data):
if c == '"':
is_comment = not is_comment
elif not is_comment:
if c == '{':
if not open_brackets:
start = index
open_brackets += 1
if c == '}':
open_brackets -= 1
if not open_brackets:
lines.append(data[start: index+1])
return lines
Run Code Online (Sandbox Code Playgroud) 我正在编写一个脚本来通过 REST 收集一些库存数据。然后我想过滤它以创建一个列表和两个字典,我可以在脚本的其他地方使用它们。
例如,从这里:
{'version': '0.0'
'response': [{'chassisType': 'C800',
'family': 'C897VA-K9',
'hostname': 'chaney-xtr',
'imageName': 'c800-universalk9-mz.SPA.154-2.T.bin',
'interfaceCount': '10',
'lastUpdated': '2014-06-03 01:39:19.855491-07',
'lineCardId': 'e5bddd56-2194-4b83-8ae5-597893800051',
'macAddress': '88:5A:92:A4:E7:C8',
'managementIpAddress': '192.168.2.1',
'memorySize': '988236K/60339K',
'networkDeviceId': 'e15789bd-47df-4df9-809f-daf81d15ff2a',
'numUpdates': 1,
'platformId': 'C897VA-K9',
'portRange': 'ATM0, ATM0.1, BRI0, BRI0:1-2, Dialer1, Ethernet0, GigabitEthernet0-8, LISP0, Loopback0-1, NVI0, Virtual-Access1, Virtual-Template1, Vlan1',
'role': 'Unknown',
'roleSource': 'auto',
'serialNumber': 'FGL175124DX',
'softwareVersion': '15.4(2)T',
'type': 'UNKNOWN',
'upTime': '2 weeks, 3 days, 18 hours, 2 minutes',
'vendor': 'Cisco'},
{'chassisType': 'C800',
'family': 'C897VA-K9',
'hostname': 'chaney-xtr2',
'imageName': 'c800-universalk9-mz.SPA.154-2.T.bin',
'interfaceCount': '10',
'lastUpdated': …Run Code Online (Sandbox Code Playgroud) 对于一个项目,我需要用 python 编写一个 json 文件,但我已经看到的所有内容(json.dump)与我想要做的不匹配......
我有一个结构,我只想在里面添加一些东西。我想添加一个带有输入的服务,例如:
{
"Serial_011": "011",
"Servers_011":
[
{
"hostname": "srv-a.11",
"ipv4_address": "0.0.0.0",
"services":
[
{
"uri": "http://www.google.fr/1",
"expected_code": 200
},
{
"uri": "http://www.google.fr/2",
"expected_code": 200
}
]
},
{
"hostname": "nsc-srv-b.11",
"ipv4_address": "0.0.0.0",
"services":
[
{
"uri": "http://www.google.fr/3",
"expected_code": 200
},
{
"uri": "http://www.google.fr/4",
"expected_code": 200
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
我想读取一个包含 ObjectId 和 ISODate 的 JSON 文件。
JSON 数据:
{
"_id" : ObjectId("5baca841d25ce14b7d3d017c"),
"country" : "in",
"state" : "",
"date" : ISODate("1902-01-31T00:00:00.000Z")
}
Run Code Online (Sandbox Code Playgroud) python ×10
json ×9
dictionary ×2
python-3.x ×2
list ×1
pandas ×1
pymongo ×1
python-2.7 ×1
rest ×1
urllib2 ×1