Es scheint, dass die Datenstruktur sowohl für Menschen als auch für Computer (grob) leicht zu verstehen ist. [Was ist 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)
Es scheint, dass Sie JSON-Daten mit Python lesen können, indem Sie die JSON-Bibliothek importieren.
Es scheint, dass Sie, wenn Sie es lesen, genauso damit umgehen können wie mit dem Wörterbuchtyp. (Ich bin mir nicht sicher über den diktären Typ, also werde ich hier lernen.)
--Dictionary-Typ ist eine Menge (Element) von Schlüssel und Wert
test01.py
# -*- coding: utf-8 -*-
dict = {"name": "tamago", "color": "yellow"}
#Geben Sie den Schlüssel an und rufen Sie den Wert ab
print dict["name"]
print dict["color"]
test01.Ausgabeergebnis von py
tamago
yellow
Wenn Sie versuchen, einen nicht vorhandenen Schlüssel abzurufen, wird ein Fehler angezeigt.
test02.py
# -*- coding: utf-8 -*-
dict = {"name": "tamago", "color", "yellow"}
#Holen Sie sich eine Liste der Schlüssel
keyList = dict.keys()
print keyList
#Holen Sie sich eine Liste von Werten
vakList = dict.values()
print valList
#Holen Sie sich eine Liste der Schlüssel und Werte
list = dict.items()
print list
test02.Ausgabeergebnis von py
['color', 'name']
['yellow', 'tamago']
[('color', 'yellow'), ('name', 'tamago')]
Ich weiß nicht, wie ich es bekommen soll, da der Wörterbuchtyp keine Reihenfolge der Elemente enthält
Ich habe eine ungefähre Vorstellung vom Wörterbuch! !!
Die diesmal verwendete Web-API ist die Kommentarerfassungs-API von Twicas (Kommentarerfassungs-API - Twicas).
Wenn Sie JSON-Daten von WebAPI abrufen, importieren Sie "urllib" und verwenden Sie die Methode, um sie abzurufen. Um die abgerufenen Daten mit Python zu verarbeiten, importieren Sie "json" und verwenden Sie die Methode
test02.py
# -*- coding: utf-8 -*-
import urllib
import json
import sys
import codecs
#Jetzt können Sie die Zeichen entfernen, die nicht in cp932 konvertiert werden können
sys.stdout = codecs.getwriter(sys.stdout.encoding)(sys.stdout, errors='ignore')
#Rufen Sie das Ergebnis einer JSON-formatierten Zeichenfolge von der Web-API ab
def dataGet():
#URI-Schema
url = 'http://api.twitcasting.tv/api/commentlist?'
#URI-Parameterdaten
param = {
'user': 'tamago324_pad', #ID der Person, die Sie erhalten möchten
'type': 'json' #Angabe der zu erfassenden Daten
}
#Erstellen einer Zeichenfolge von URI-Parametern
paramStr = urllib.urlencode(param) # type=json&user=tamago324_Als Pad geformt
#Erstellen eines zu lesenden Objekts
readObj = urllib.urlopen(url + paramStr)
#Holen Sie sich JSON von der Web-API
response = readObj.read()
# print type(response) # >> <type 'str'>
return response
#Konvertieren Sie die von der Web-API erhaltenen Daten in JSON
def jsonConversion(jsonStr):
#Konvertieren Sie von webAPI erhaltene JSON-Daten in ein Formular, das mit Python verwendet werden kann
data = json.loads(jsonStr)
return data
#Japanisch ist u'\u767d'Konvertieren Sie in Unicode
# return json.dumps(data[0], ensure_ascii=False)
#Kommentarbuchungszeit h:mm:In ss konvertieren
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)
#Zeigen Sie die erfassten Daten an
for item in res:
print getElapsedTime(item['duration']) + " " + item['userstatus']['name'] + " " + item['message']
10:14 Es ist zufällig ein Test
09:49 Es ist zufällig ein Kommentar
def jsonGet ():
ruft JSON-Daten von webAPI </ strong> ab
Ich erstelle eine Zeichenfolge von URI-Parametern aus dem Wörterbuch mit "urllib.urlencode ()". Wenn von dieser Methode mehrere Zeichenfolgen in Form von key = value zurückgegeben werden, werden sie mit & kombiniert (Beispiel: key1 = value1 & key2 = value2
).
Das Wörterbuch enthält keine Reihenfolge, daher können Sie die Reihenfolge, in der sie kombiniert werden, nicht angeben.
Erstellen eines Objekts zum Lesen von JSON-Daten mit urllib.urlopen ()
Abrufen von JSON-Daten von der Web-API mit der Methode des erstellten Objekts (object.read ()
)
Der Rückgabewert scheint ein "str" -Typ zu sein
Konvertieren Sie den von json.loads () erhaltenen JSON so, dass er von Python verarbeitet werden kann. Da es jedoch als Unicode zurückgegeben wird, wird Japanisch wie "\ u3063" json.dumps (data, sure_ascii = False) "konnte Japanisch fest anzeigen! Ich dachte, es wäre eine Zeichenfolge ... "Daten" waren "Liste" ... Ist dies die einzige Möglichkeit, nacheinander von Unicode nach Str zu konvertieren ...
Ich war besorgt darüber, was ich tun sollte, aber ich habe versucht, nur einen Kommentar zu erhalten, und als ich ihn mit "Druckdaten [0] [" Nachricht "]" anzeigte, wurde er fest auf Japanisch angezeigt! !! !! Der Kommentar enthielt jedoch "꒳", und als ich versuchte, ihn anzuzeigen, wurde der Fehler "UnicodeEncodeError: 'cp932' Codec kann das Zeichen u '\ ua4b3' an Position 0: unzulässige Multibyte-Sequenz" nicht codieren.
Was tun, wenn aufgrund von UnicodeEncodeError </ b> keine Zeichen auf der Konsole angezeigt werden können? Wenn Sie eine Unicode-Zeichenfolge drucken möchten, die gelegentlich Zeichen enthält, die von cp932 auf der Windows-Konsole nicht ausgedrückt werden können - Yasukazu Nishios Hatena-Tagebuch
sys.stdout = codecs.getwriter (sys.stdout.encoding) (sys.stdout, error = 'ignore')
Wie auch immer, Sie können die Zeichen ausblenden, die von cp932 nicht ausgedrückt werden können (der Mechanismus ist unbekannt. Ich denke darüber nach, es jetzt zu klären.
Im Moment mache ich es auf der Konsole, aber ich denke, dass es besser aussehen wird, wenn es auf Windows Apps usw. angezeigt werden kann.
Wörterbuch-Einführung in Python Bibliothek: json - Leben mit Python 20.5. Urllib - Zugriff auf eine Ressource über URL - Python 2.7.x-Dokumentation Versuchen Sie, die Yahoo-API mit dem Python-BTY-Memorandum zu verwenden Kommunikationsnotiz in Python - Qiita abrufen, veröffentlichen Holen Sie sich eine Unicode-JSON-Zeichenfolge einschließlich Japanisch. --Qiita 18.2. Json - JSON-Encoder und -Decoder - Python 2.7.x-Dokumentation
Recommended Posts