Il semble que la structure des données soit facile à comprendre pour les humains et les ordinateurs (en gros) [Qu'est-ce que JSON? -Qiita](http://qiita.com/SotaSuzuki/items/c3b46c4e24c1ca9b4d37#%E6%96%87%E5%AD%97%E5%88%97%E3%81%AE%E8%A1 % A8% E7% 8F% BE)
Il semble que vous puissiez lire les données json avec python en important la bibliothèque json.
Il semble que si vous le lisez, vous pouvez le gérer de la même manière que le type de dictionnaire. (Je ne suis pas sûr du type dictinaire, donc je vais étudier ici.)
--Le type de dictionnaire est un ensemble (élément) de clé et de valeur
test01.py
# -*- coding: utf-8 -*-
dict = {"name": "tamago", "color": "yellow"}
#Spécifiez la clé et récupérez la valeur
print dict["name"]
print dict["color"]
test01.Résultat de sortie de py
tamago
yellow
Si vous essayez de récupérer une clé qui n'existe pas, vous obtiendrez une erreur.
test02.py
# -*- coding: utf-8 -*-
dict = {"name": "tamago", "color", "yellow"}
#Obtenez une liste de clés
keyList = dict.keys()
print keyList
#Obtenez une liste de valeurs
vakList = dict.values()
print valList
#Obtenez une liste de clés et de valeurs
list = dict.items()
print list
test02.Résultat de sortie de py
['color', 'name']
['yellow', 'tamago']
[('color', 'yellow'), ('name', 'tamago')]
Je ne sais pas comment l'obtenir car il n'y a pas d'ordre des éléments dans le type de dictionnaire
J'ai une idée approximative du dictionnaire! !!
L'API Web utilisée cette fois est l'API d'acquisition de commentaires de Twicas (API d'acquisition de commentaires --Twicas).
Lors de la récupération de données JSON depuis l'API Web, importez ʻurllibet utilisez la méthode pour l'obtenir. Pour rendre les données récupérées exploitables avec python, importez
json` et utilisez la méthode
test02.py
# -*- coding: utf-8 -*-
import urllib
import json
import sys
import codecs
#Vous pouvez maintenant éliminer les caractères qui ne peuvent pas être convertis en cp932
sys.stdout = codecs.getwriter(sys.stdout.encoding)(sys.stdout, errors='ignore')
#Obtenir le résultat d'une chaîne au format JSON à partir de l'API Web
def dataGet():
#Schéma d'URI
url = 'http://api.twitcasting.tv/api/commentlist?'
#Données de paramètre URI
param = {
'user': 'tamago324_pad', #ID de la personne que vous souhaitez obtenir
'type': 'json' #Spécifier les données à acquérir
}
#Création d'une chaîne de paramètres URI
paramStr = urllib.urlencode(param) # type=json&user=tamago324_En forme de coussin
#Créer un objet à lire
readObj = urllib.urlopen(url + paramStr)
#Obtenez JSON à partir de l'API Web
response = readObj.read()
# print type(response) # >> <type 'str'>
return response
#Convertir les données obtenues à partir de l'API Web en JSON
def jsonConversion(jsonStr):
#Convertir les données JSON obtenues à partir de webAPI dans un formulaire pouvant être utilisé avec python
data = json.loads(jsonStr)
return data
#Le japonais est u'\u767d'Parce que ça devient comme, convertir en Unicode
# return json.dumps(data[0], ensure_ascii=False)
#Heure de publication du commentaire h:mm:Convertir en ss
def getElapsedTime(duration):
secStr = ""
minStr = ""
hourInt = duration / 3600
minInt = (duration -3600 * hourInt) / 60
secInt = duration % 60
if minInt <= 9:
minStr = "0" + str(minInt)
else:
minStr = str(minInt)
if secInt <= 9:
secStr = "0" + str(secInt)
else:
secStr = str(secInt)
if hourInt >= 1:
return str(hourInt) + ":" + minStr + ":" + secStr
else:
return minStr + ":" + secStr
if __name__ == '__main__':
resStr = dataGet()
res = jsonConversion(resStr)
#Afficher les données acquises
for item in res:
print getElapsedTime(item['duration']) + " " + item['userstatus']['name'] + " " + item['message']
10:14 Il se trouve que c'est un test
09:49 Il se trouve que c'est un commentaire
def jsonGet ():
obtient des données JSON de webAPI </ strong>
Je crée une chaîne de paramètres URI à partir du dictionnaire avec ʻurllib.urlencode () . Si plusieurs chaînes sont renvoyées par cette méthode sous la forme clé = valeur, elles seront combinées avec & (exemple:
clé1 = valeur1 & clé2 = valeur2`).
Il n'y a pas d'ordre dans le dictionnaire, vous ne pouvez donc pas spécifier l'ordre dans lequel ils sont combinés.
ʻUrllib.urlopen () `crée un objet pour lire les données JSON
Obtention de données JSON depuis l'API Web avec la méthode de l'objet créé (ʻobject.read () ) La valeur de retour semble être de type
str`
Convertissez le JSON obtenu par json.loads ()
pour qu'il puisse être manipulé par python. Cependant, comme il est renvoyé sous forme d'unicode, le japonais devient comme \ u3063
json.dumps (data, ensure_ascii = False) a pu afficher le japonais fermement! Je pensais que c'était une chaîne ...
data was
list` ...
Est-ce le seul moyen de convertir unicode en str un par un ...
Je m'inquiétais de ce qu'il fallait faire, mais j'ai essayé de n'obtenir qu'un seul commentaire, et quand je l'ai affiché avec prinnt data [0] ['message']
, il s'affichait fermement en japonais! !! !! Cependant, le commentaire contenait ꒳
, et quand j'ai essayé de l'afficher, j'ai eu l'erreur ʻUnicodeEncodeError: le codec 'cp932' ne peut pas encoder le caractère u '\ ua4b3' en position 0: séquence multi-octets illégale`.
Que faire lorsque les caractères ne peuvent pas être affichés sur la console en raison de UnicodeEncodeError </ b> Lorsque vous souhaitez imprimer une chaîne de caractères Unicode qui contient parfois des caractères qui ne peuvent pas être exprimés par cp932 sur la console Windows - Journal Hatena de Yasukazu Nishio
sys.stdout = codecs.getwriter (sys.stdout.encoding) (sys.stdout, errors = 'ignore')
Quoi qu'il en soit, vous pouvez masquer les caractères qui ne peuvent pas être exprimés par cp932 (le mécanisme est inconnu .. Je pense à le clarifier maintenant)
En ce moment, je le fais sur la console, mais je pense que cela sera meilleur s'il peut être affiché sur les applications Windows, etc.
Dictionnaire-Introduction à Python Bibliothèque: json --Life with Python 20.5. Urllib - Accéder à n'importe quelle ressource par URL - Documentation Python 2.7.x Essayez d'utiliser l'API Yahoo avec le mémorandum Python-BTY Obtenir, publier un mémo de communication en Python --Qiita Obtenez une chaîne JSON Unicode comprenant le japonais. --Qiita 18.2. Json - Encodeur et décodeur JSON - Documentation Python 2.7.x
Recommended Posts