相关疑难解决方法(0)

如何将JSON数据写入文件?

我将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

如何解决这个问题?

python json

992
推荐指数
11
解决办法
134万
查看次数

从文件中读取JSON?

我有点头疼,因为一个简单的外观,简单的陈述在我脸上抛出一些错误.

我有一个名为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 json

284
推荐指数
4
解决办法
71万
查看次数

AttributeError("'str'对象没有属性'read'")

在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)

这个错误意味着什么,我做了什么导致它?

python urllib2 attributeerror python-2.7 canonical-quickly

112
推荐指数
6
解决办法
20万
查看次数

将Json文件读取为Pandas Dataframe错误

我有一个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,但它似乎有大量的数据.

python json pandas

17
推荐指数
4
解决办法
3万
查看次数

通过从json创建新对象来消除嵌套

我有一个标准的嵌套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)

python json dictionary

9
推荐指数
1
解决办法
203
查看次数

如何在json文件中查找和替换部分值

我有一个 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)

python json python-3.x

9
推荐指数
2
解决办法
3万
查看次数

解析一行中的多个 json 对象

我正在解析包含 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)

python json

7
推荐指数
2
解决办法
8535
查看次数

在 Python 中从 JSON 数据创建列表和字典

我正在编写一个脚本来通过 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 rest json dictionary list

6
推荐指数
1
解决办法
2470
查看次数

用 Python 写入 json 文件

对于一个项目,我需要用 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)

提前致谢

python json

5
推荐指数
1
解决办法
5354
查看次数

如何在 Python 中读取包含 ObjectId 和 ISODate 的 json 文件?

我想读取一个包含 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 json pymongo python-3.x

5
推荐指数
2
解决办法
2070
查看次数