Explicación detallada de las operaciones de lectura y escritura de JSON necesarias para la ciencia de datos

Los escenarios de aplicación más comunes para el tipo de datos JSON son las API o guardar datos en datos estables .json. Trabajar con estos datos en Python es muy simple.
inserte la descripción de la imagen aquí

JSON

origen JSON

JSON significa Notación de objetos de JavaScript. Un subconjunto del lenguaje de programación JavaScript que maneja la sintaxis literal de objetos. JSON ha sido durante mucho tiempo un lenguaje agnóstico y existe como su propio estándar.

muestra JSON

{
    
    
	 "data":[
	  {
    
    
	    "id": "1",
	    "name": "A同学",
	    "state": "1",
	    "createTime": "2020-01-21"
	  },
	  {
    
    
	    "id": "2",
	    "name": "B同学",
	    "state": "1",
	    "createTime": "2020-01-21"
	  },
	  {
    
    
	    "id": "3",
	    "name": "C同学",
	    "state": "0",
	    "createTime": "2020-01-21"
	  }
	]
}

Python admite JSON de forma nativa

Python viene con un paquete integrado json para codificar y decodificar datos JSON.
inserte la descripción de la imagen aquí

Método de cita.

import json

El proceso de codificación JSON a menudo se denomina serialización. El término se refiere a convertir datos en una serie de bytes para almacenamiento o transmisión a través de una red. La deserialización es el proceso interactivo de decodificación de datos almacenados o entregados en el estándar JSON.

Serializar JSON

Las conversiones intuitivas convierten objetos simples de Python a JSON.

Pitón JSON
dictar objeto
lista, tupla formación
calle cuerda
int, largo, flotante número
Verdadero verdadero
Falso falso
Ninguna nulo

Ejemplo de serialización simple

Cree un dato simple.

data =   {
    
    
	 "data":[
	  {
    
    
	    "id": "1",
	    "name": "A同学",
	    "state": "1",
	    "createTime": "2020-01-21"
	  },
	  {
    
    
	    "id": "2",
	    "name": "B同学",
	    "state": "1",
	    "createTime": "2020-01-21"
	  },
	  {
    
    
	    "id": "3",
	    "name": "C同学",
	    "state": "0",
	    "createTime": "2020-01-21"
	  }
	]
}

Los datos se guardan directamente como texto.

with open("data_file.json", "w") as f:
    json.dump(data, f)

Los datos se utilizan directamente como una cadena.

json_str = json.dumps(data)

Deserialización de JSON

Utilice load() y loads() en la biblioteca json para convertir datos codificados JSON en objetos de Python.

JSON Pitón
objeto dictar
formación lista
cuerda calle
número (entero) En t
número (coma flotante) flotar
verdadero Verdadero
falso Falso
nulo Ninguna

Ejemplo de deserialización simple

Leer datos escritos en un archivo json.

with open("data_file.json", "r") as read_file:
    data = json.load(read_file)

Cadena de datos.

json_string = """
{
	 "data":[
	  {
	    "id": "1",
	    "name": "A同学",
	    "state": "1",
	    "createTime": "2020-01-21"
	  },
	  {
	    "id": "2",
	    "name": "B同学",
	    "state": "1",
	    "createTime": "2020-01-21"
	  },
	  {
	    "id": "3",
	    "name": "C同学",
	    "state": "0",
	    "createTime": "2020-01-21"
	  }
	]
}
"""
data = json.loads(json_string)

Aplicaciones

Analice la información de texto a través del raspado de datos de Internet.

# 秦皇岛煤炭网微博
import requests
from bs4 import BeautifulSoup
import datetime
url = "http://news.cqcoal.com/manage/newsaction.do?method:webListPageNewsArchivesByTypeid"
post_param = {
    
    'pageNum':'1','pageSize':'20','jsonStr':'{"typeid":"238"}'}
return_data = requests.post(url,data =post_param)
return_data = return_data.content.decode("utf-8")

import json
for i in json.loads(return_data)["rows"]:
    title = i["title"]
    url = "http://news.cqcoal.com/blank/nc.jsp?mid="+str(i["id"])
    timeStamp=int(i["pubdate"])
    dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
    date = dateArray.strftime("%Y-%m-%d")
    print(title,url,date)

inserte la descripción de la imagen aquí

codificar y decodificar

datos personalizados.

import json

# 基础的数字字典
py_object = {
    
    "c": 0, "b": 0, "a": 0}

# JSON 编码
json_string = json.dumps(py_object)
print(json_string)
print(type(json_string))

{
    
    "c": 0, "b": 0, "a": 0}
<class 'str'>


# JSON 解码
py_obj = json.loads(json_string)

print(py_obj)
print(type(py_obj))

{
    
    'c': 0, 'b': 0, 'a': 0}
<class 'dict'>

Si encuentra TypeError: Object of type SampleClass no es un error serializable JSON, debe personalizar la codificación y decodificación.

import json

class Student:
	def __init__(self, name, roll_no, address):
		self.name = name
		self.roll_no = roll_no
		self.address = address

	def to_json(self):
		'''
		将此类的实例转换为 json
		'''
		return json.dumps(self, indent = 4, default=lambda o: o.__dict__)

class Address:
	def __init__(self, city, street, pin):
		self.city = city
		self.street = street
		self.pin = pin
		
address = Address("Bulandshahr", "Adarsh Nagar", "203001")
student = Student("Raju", 53, address)

# 编码
student_json = student.to_json()
print(student_json)
print(type(student_json))

{
    
    
    "name": "Raju",
    "roll_no": 53,
    "address": {
    
    
        "city": "Bulandshahr",
        "street": "Adarsh Nagar",
        "pin": "203001"
    }
}
<class 'str'>

# 解码
student = json.loads(student_json)
print(student)
print(type(student))

{
    
    'name': 'Raju', 'roll_no': 53, 'address': {
    
    'city': 'Bulandshahr', 'street': 'Adarsh Nagar', 'pin': '203001'}}
<class 'dict'>

Supongo que te gusta

Origin blog.csdn.net/qq_20288327/article/details/124115125
Recomendado
Clasificación