txt - procurar string em arquivo python




Analisando valores de um arquivo JSON? (6)

"Ultra JSON" ou simplesmente "ujson" pode manipular ter [] na entrada do seu arquivo JSON. Se você estiver lendo um arquivo de entrada JSON em seu programa como uma lista de elementos JSON; tais como, [{[{}]}, {}, [], etc...] ujson pode lidar com qualquer ordem arbitrária de listas de dicionários, dicionários de listas.

Você pode encontrar o ujson no índice de pacotes do Python e a API é quase idêntica à biblioteca json do Python.

O ujson também é muito mais rápido se você estiver carregando arquivos JSON maiores. Você pode ver os detalhes de desempenho em comparação com outras bibliotecas JSON do Python no mesmo link fornecido.

Eu tenho este JSON em um arquivo:

{
    "maps": [
        {
            "id": "blabla",
            "iscategorical": "0"
        },
        {
            "id": "blabla",
            "iscategorical": "0"
        }
    ],
    "masks": [
        "id": "valore"
    ],
    "om_points": "value",
    "parameters": [
        "id": "valore"
    ]
}

Eu escrevi este script que imprime todo o texto json:

json_data=open(file_directory).read()

data = json.loads(json_data)
pprint(data)

Como posso analisar o arquivo e extrair valores únicos?


Acho que o que Ignacio está dizendo é que seu arquivo JSON está incorreto. Você tem [] quando deveria ter {} . [] são para listas, {} são para dicionários.

Veja como o seu arquivo JSON deve estar, seu arquivo JSON não carregaria para mim:

{
    "maps": [
        {
            "id": "blabla",
            "iscategorical": "0"
        },
        {
            "id": "blabla",
            "iscategorical": "0"
        }
    ],
    "masks": {
        "id": "valore"
    },
    "om_points": "value",
    "parameters": {
        "id": "valore"
    }
}

Então você pode usar seu código:

import json
from pprint import pprint

with open('data.json') as f:
    data = json.load(f)

pprint(data)

Com dados, agora você também pode encontrar valores como:

data["maps"][0]["id"]
data["masks"]["id"]
data["om_points"]

Experimente e veja se começa a fazer sentido.


Se você está em python 3 aqui é como você pode fazê-lo

{
  "connection1": {
    "DSN": "con1",
    "UID": "abc",
    "PWD": "1234",
    "connection_string_python":"test1"
  }
  ,
  "connection2": {
    "DSN": "con2",
    "UID": "def",
    "PWD": "1234"
  }
}

O código deve ser semelhante ao assumir que o arquivo connection.json é semelhante ao acima

connection_file = open('connection.json', 'r')
conn_string = json.load(connection_file)
conn_string['connection1']['connection_string_python'])
connection_file.close()
>>>test1

Seu data.json deve ficar assim:

{
 "maps":[
         {"id":"blabla","iscategorical":"0"},
         {"id":"blabla","iscategorical":"0"}
        ],
"masks":
         {"id":"valore"},
"om_points":"value",
"parameters":
         {"id":"valore"}
}

Seu código deve ser:

import json
from pprint import pprint

with open('data.json') as data_file:    
    data = json.load(data_file)
pprint(data)

Observe que isso funciona apenas no Python 2.6 e superior, pois depende da with-statement . Em Python 2.5 use from __future__ import with_statement , em Python <= 2.4, veja a resposta de Justin Peel , na qual esta resposta é baseada.

Agora você também pode acessar valores únicos como este:

data["maps"][0]["id"]  # will return 'blabla'
data["masks"]["id"]    # will return 'valore'
data["om_points"]      # will return 'value'

A resposta de Justin Peel é realmente útil, mas se você estiver usando o Python 3, a leitura de JSON deve ser feita assim:

with open('data.json', encoding='utf-8') as data_file:
    data = json.loads(data_file.read())

Nota: use json.loads vez de json.load . No Python 3, o json.loads usa um parâmetro de string. json.load usa um parâmetro de objeto semelhante a um arquivo. data_file.read() retorna um objeto de string.


   # Here you go with modified json file:
   # data.json file : 
    {
        "maps": [
            {
                "id": "blabla",
                "iscategorical": "0"
            },
            {
                "id": "blabla",
                "iscategorical": "0"
            }
        ],
        "masks": [{
            "id": "valore"
        }],
        "om_points": "value",
        "parameters": [{
            "id": "valore"
        }]
    }


   # You can call or print data on console by using below lines

    import json
    from pprint import pprint
    with open('data.json') as data_file:
        data_item = json.load(data_file)
    pprint(data_item)

    print(data_item['parameters'][0]['id'])

    #Output : 
    #pprint(data_item) output as :

    {'maps': [{'id': 'blabla', 'iscategorical': '0'},
              {'id': 'blabla', 'iscategorical': '0'}],
     'masks': [{'id': 'valore'}],
     'om_points': 'value',
     'parameters': [{'id': 'valore'}]}
    #print(data_item['parameters'][0]['id']) output as :
    valore




parsing