Um projeto para a aula envolve a análise de dados JSON do Twitter. Estou obtendo os dados e configurando-os no arquivo sem muitos problemas, mas está tudo em uma linha. Isso é bom para a manipulação de dados que estou tentando fazer, mas o arquivo é ridiculamente difícil de ler e não posso examiná-lo muito bem, tornando a escrita de código para a parte de manipulação de dados muito difícil.
Alguém sabe fazer isso de dentro do Python (ou seja, não usando a ferramenta de linha de comando, que não consigo fazer funcionar)? Este é meu código até agora:
header, output = client.request(twitterRequest, method="GET", body=None,
headers=None, force_auth_header=True)
# now write output to a file
twitterDataFile = open("twitterData.json", "wb")
# magic happens here to make it pretty-printed
twitterDataFile.write(output)
twitterDataFile.close()
Nota Agradeço as pessoas que me apontam para a documentação do simplejson e tal, mas como afirmei, já olhei para isso e continuo precisando de ajuda. Uma resposta verdadeiramente útil será mais detalhada e explicativa do que os exemplos encontrados lá. obrigado
Além disso: tente isso na linha de comando do Windows:
more twitterData.json | python -mjson.tool > twitterData-pretty.json
resulta neste:
Invalid control character at: line 1 column 65535 (char 65535)
Eu daria a você os dados que estou usando, mas são muito grandes e você já viu o código que usei para fazer o arquivo.
fonte
\r\n
vs\n
) é importante. Consulte stackoverflow.com/questions/3257869/… . No seu caso, você quer terminações de linha compatíveis com o Windows, mas pode não conseguir isso no terminal do Twitter, então você deve abrir em modo de texto.Respostas:
Você deve usar o argumento opcional
indent
.fonte
with open("name_of_file.json", "w") as f: f.write(my_formatted_json_var)
Vantagem sendo que você tem certeza de que o arquivo irá fechar, digamos em trechos maiores ...with
A sintaxe é definitivamente melhor, mas tento dimensionar minhas respostas para meu públicoVocê pode analisar o JSON e gerá-lo novamente com recuos como este:
Consulte http://docs.python.org/library/json.html para obter mais informações.
fonte
header, output = client.request(twitterRequest, method="GET", body=None, headers=None, force_auth_header=True) twitterDataFile = open("twitterData.json", "wb") json.dumps(json.loads(output), twitterDataFile, indent=4) twitterDataFile.close()
json.dumps
retorna uma string.json.dump
grava em um arquivo.Você não precisa
json.dumps()
se não quiser analisar a string mais tarde, simplesmente usejson.dump()
. É mais rápido também.fonte
Você pode usar o módulo json do python para uma impressão bonita.
Então, no seu caso
fonte
doesn't work as well
.?Se você já tem arquivos JSON existentes que deseja formatar, você pode usar isto:
fonte
Se você estiver gerando um novo * .json ou modificando o arquivo josn existente, use o parâmetro "indent" para o formato json do pretty view.
fonte
fonte
Você pode redirecionar um arquivo para python e abri-lo usando a ferramenta e para lê-lo, use mais.
O código de amostra será,
fonte