[Aprender python desde cero] 15. Comprensión profunda de la codificación de cadenas y conjuntos de caracteres

conjunto de caracteres

Las computadoras solo pueden procesar números (de hecho, los números 0 y 1). Si desea procesar texto, primero debe convertir el texto en números antes de poder procesarlo. Las primeras computadoras usaban 8 bits (bit) como un byte (byte), por lo que el número entero más grande que puede representar un byte es 255 (binario 11111111 = decimal 255), 0 - 255 se usa para representar el tamaño. Escriba letras, números y algunos símbolos, esta tabla de códigos se llama código ASCII.

La tabla de códigos ASCII utiliza binario de 7 bits para representar un carácter, y su rango va de 0 a 127. Solo puede representar 128 caracteres en total y solo admite inglés. Con el desarrollo de la informática, también se han agregado a la tabla de códigos caracteres de idiomas de Europa occidental, griego, tailandés, árabe, hebreo y otros idiomas, formando una nueva tabla de códigos ISO8859-1 (también conocida como Latin1) tabla de códigos . ISO8859-1 utiliza binario de 8 bits para representar una cadena de caracteres, que es totalmente compatible con la tabla de códigos ASCII.

Unicode (Unicode, Universal Code, Unicode) es un estándar de la industria en el campo de la informática, que incluye conjuntos de caracteres, esquemas de codificación, etc. Unicode se creó para resolver las limitaciones de los esquemas de codificación de caracteres tradicionales. Establece una codificación binaria única y unificada para cada carácter en cada idioma para cumplir con los requisitos de procesamiento y conversión de texto entre idiomas y plataformas.

Convertir entre caracteres y codificaciones

Usando los métodos chr y ord, se puede realizar la conversión mutua entre caracteres y códigos.

print(ord('a'))  # 使用ord方法,可以获取一个字符对应的编码
print(chr(100))  # 使用chr方法,可以获取一个编码对应的字符

reglas de codificación

El uso de Unicode establece un código binario único para cada carácter en cada idioma, pero aún tiene ciertos problemas y no es perfecto.

Por ejemplo, el resultado de convertir el carácter chino "usted" en un carácter es 0x4f60, y convertirlo en binario es 01001111 01100000. En este momento, hay dos problemas:

  1. ¿1001111 01100000 es un carácter chino "usted" o dos caracteres latinos1?
  2. Si Unicode estipula que cada carácter está representado por n ocho bits, para los caracteres Latin1, se desperdiciará mucho espacio de almacenamiento.

Para resolver este problema, han surgido algunas reglas de codificación y los números Unicode se calculan de acuerdo con ciertas reglas de codificación para obtener una nueva codificación. Las codificaciones de caracteres comúnmente utilizadas en China incluyen GBK, Big5 y utf8.

Usando el método de codificación de una cadena, la cadena se puede convertir en binario de acuerdo con el formato de codificación especificado; usando el método de decodificación, los datos binarios se pueden convertir en una cadena de acuerdo con el formato de codificación especificado.

s1 = '你'.encode('utf8')  # 将字符 你 按照utf8格式编码称为二进制
print(type(s1))  # <class 'bytes'>
print(s1)  # b'\xe4\xbd\xa0'

s2 = s1.decode('utf8') # 将二进制按照utf8格式解码称为字符串
print(s2)

s3 = '你'.encode('gbk') # 将字符 你 按照gbk格式转换称为二进制
print(s3)  # b'\xc4\xe3'

s4 = s3.decode('gbk')  # 将二进制按照gbk格式解码称为字符
print(s4)

Pensamiento: Las razones y soluciones para texto distorsionado.

objetivo de aprendizaje

  1. Representación de cadenas
  2. Subíndice y corte de cadenas
  3. Operaciones comunes en cadenas
  4. Conjuntos de caracteres y codificaciones
  5. operador miembro
  6. método de formato de cadena

operador miembro

Los operadores de pertenencia (en y no en) se pueden usar para determinar rápidamente si un elemento está en un objeto iterable específico y si el elemento que se evaluará en el formato de sintaxis es un objeto iterable.

en operador

Pensando: ¿Cómo juzgar si un carácter está en la cadena especificada?

msg = 'hello'
char = input('请输入一个字符:')

# 使用字符串的 find 方法可以判断字符是否存在
if msg.find(char) != -1:
    print('您输入的字符存在')
else:
    print('您输入的字符不存在')

# 使用 in 运算符可以更加方便的查看字符是否存在
if char in msg:
    print('您输入的字符存在')
else:
    print('您输入的字符不存在')

no en operador

Se usa de la misma manera que el operador in, excepto que not in se usa para determinar si el elemento no está en la cadena especificada.

Nota: No todos los datos pueden usar el operador de identidad, y el operador de identidad solo puede ir seguido de un objeto iterable.

'h' in 'hello'  
'zhangsan' in ['lisi','henry','merry','jack']

1 in 123 # 报错,数字 123 不是一个可迭代对象

Caso avanzado

[Python] Python se da cuenta del juego de adivinanzas: ¡desafía tu inteligencia y tu suerte!

[python] La biblioteca Python tkinter implementa un programa GUI para el convertidor de unidades de peso

[python] Use Selenium para obtener entradas (2023 Blog Star)

[python] Use Selenium y Chrome WebDriver para obtener información de artículos en [Tencent Cloud Studio Practical Training Camp]

Use el estudio Tencent Cloud Cloud para realizar la programación Baidu AI para realizar el reconocimiento de texto

[Diversión con la serie Python [Xiaobai debe ver] Rastreador de subprocesos múltiples de Python: descargue imágenes de sitios web de paquetes de emoticonos

[Serie Juega con Python] [Imprescindible para Xiaobai] Usa Python para rastrear datos históricos de Shuangseqiu y analizarlos visualmente

[Jugar con la serie python] [Imprescindible para Xiaobai] Utilice la tecnología de rastreo de Python para obtener una IP proxy y guardarla en un archivo

[Imprescindible para Xiaobai] Ejemplo de síntesis de imágenes de Python usando la biblioteca PIL para realizar la síntesis de múltiples imágenes por rangos y columnas

[Xiaobai debe ver] El combate real del rastreador de Python descarga imágenes de diosas en lotes y las guarda localmente

[Xiaobai debe ver] Análisis detallado del generador de nube de palabras de Python e implementación de código

[Xiaobai debe ver] Python rastrea un ejemplo de datos de jugadores de la NBA

[Imprescindible para Xiaobai] Código de muestra para rastrear y guardar audio del Himalaya usando Python

[Imprescindible para Xiaobai] Realización técnica del uso de Python para descargar imágenes de piel de League of Legends en lotes

[Xiaobai debe ver] Visualización y procesamiento de datos del rastreador de Python

[Imprescindible para Xiaobai] Programa rastreador de Python para obtener fácilmente imágenes de piel de héroe de King of Glory

[Imprescindible para Xiaobai] Use Python para generar una lista personalizada de documentos de Word

[Imprescindible para Xiaobai] Combate de rastreadores de Python: obtenga imágenes del sitio web de Onmyoji y guárdelas automáticamente

Xiaobai debe ver la serie de sistemas de gestión de bibliotecas: código de muestra para las funciones de inicio de sesión y registro

100 casos del combate real de Xiaobai: un programa completo y simple de sentencia ganadora de la lotería Shuangseqiu, adecuado para los primeros pasos de Xiaobai

Procesamiento y visualización de datos geoespaciales usando geopandas y shapely (.shp)

Utilice selenio para rastrear los datos de la lista de películas de Maoyan

Explicación detallada del principio y la implementación del algoritmo de mejora de imagen Retinex

Guía de introducción a los rastreadores (8): escribir programas rastreadores de datos meteorológicos para el análisis visual

Guía introductoria a los rastreadores (7): Uso de Selenium y BeautifulSoup para rastrear la película Douban Top250 Ejemplo de explicación [Reptile Xiaobai must watch]

Guía de inicio de rastreadores (6): Anti-rastreadores y habilidades avanzadas: proxy de IP, disfraz de agente de usuario, verificación de inicio de sesión de omisión de cookies y herramientas de identificación de código de verificación

Guía introductoria a los rastreadores (5): rastreadores distribuidos y control de concurrencia [Métodos de implementación para mejorar la eficiencia del rastreo y el control de la racionalidad de las solicitudes]

Introducción a los rastreadores (4): la mejor forma de rastrear páginas web dinámicas con Selenium y API

Guía de introducción a los rastreadores (3): solicitudes de red de Python y estrategias comunes contra los rastreadores

Introducción a los rastreadores (2): cómo utilizar expresiones regulares para la extracción y el procesamiento de datos

Primeros pasos con los reptiles (1): aprenda los conceptos básicos y las habilidades de los reptiles

Aplicación del modelo de aprendizaje profundo en el reconocimiento de imágenes: práctica de conjuntos de datos CIFAR-10 y análisis de precisión

Conceptos básicos de programación orientada a objetos de Python y código de muestra

Guía de operación de la base de datos MySQL: aprenda a usar Python para agregar, eliminar, modificar y consultar operaciones

Guía de operación de archivos de Python: codificación, lectura, escritura y manejo de excepciones

Utilice Python y Selenium para automatizar el rastreo#【Convocatoria especial para el Festival del Bote del Dragón】Explore la última tecnología, y el futuro será gracias a usted"Zong" #Artículos contribuidos

Tutorial multihilo y multiproceso de Python: análisis completo, casos de código y habilidades de optimización

Conjunto de herramientas de automatización de Selenium - Guía completa y tutoriales

Tutorial de los conceptos básicos del rastreador web de Python avanzados al combate real

Tutorial introductorio de Python: domine los conocimientos básicos de for loop, while loop, operación de cadenas, lectura y escritura de archivos y manejo de excepciones

Tutorial de procesamiento y análisis de datos de Pandas: desde lo básico hasta el combate real

Explicación detallada de los tipos de datos de uso común y las operaciones relacionadas en Python

[Último en 2023] Explicación detallada de seis esquemas principales para mejorar el modelo de índice de clasificación

Introducción a los conceptos básicos y habilidades avanzadas de programación de Python, desarrollo web, análisis de datos y aprendizaje automático e inteligencia artificial

Gráfico de resultados de predicción con 4 métodos de regresión: regresión vectorial, regresión de bosque aleatorio, regresión lineal, regresión de vecinos más cercanos K

Supongo que te gusta

Origin blog.csdn.net/qq_33681891/article/details/132232951
Recomendado
Clasificación