[Aprenda python do zero] 15. Compreensão profunda da codificação de strings e conjuntos de caracteres

conjunto de caracteres

Os computadores só podem processar números (na verdade, os números 0 e 1).Se você deseja processar texto, deve primeiro converter o texto em números antes de poder processá-lo. Os primeiros computadores usavam 8 bits (bit) como um byte (byte), então o maior número inteiro que um byte pode representar é 255 (binário 11111111=decimal 255), 0 - 255 é usado para representar o tamanho Escreva letras, números e alguns símbolos, esta tabela de códigos é chamada de código ASCII.

A tabela de código ASCII usa um binário de 7 bits para representar um caractere e seu intervalo varia de 0 a 127. Ela pode representar apenas 128 caracteres no total e oferece suporte apenas ao inglês. Com o desenvolvimento da ciência da computação, caracteres de idiomas da Europa Ocidental, grego, tailandês, árabe, hebraico e outros idiomas também foram adicionados à tabela de códigos, formando uma nova tabela de códigos ISO8859-1 (também conhecida como Latin1). . ISO8859-1 usa binário de 8 bits para representar uma cadeia de caracteres, que é totalmente compatível com a tabela de códigos ASCII.

Unicode (Unicode, Universal Code, Unicode) é um padrão da indústria no campo da ciência da computação, incluindo conjuntos de caracteres, esquemas de codificação, etc. O Unicode foi criado para resolver as limitações dos esquemas tradicionais de codificação de caracteres.Ele define uma codificação binária unificada e exclusiva para cada caractere em cada idioma para atender aos requisitos de conversão e processamento de texto entre idiomas e plataformas cruzadas.

Converter entre caracteres e codificações

Usando os métodos chr e ord, a conversão mútua entre caracteres e códigos pode ser realizada.

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

regras de codificação

O uso do Unicode define um código binário exclusivo para cada caractere em cada idioma, mas ainda apresenta alguns problemas e não é perfeito.

Por exemplo, o resultado da conversão do caractere chinês "você" em um caractere é 0x4f60 e da conversão em binário é 01001111 01100000. Neste momento, existem dois problemas:

  1. 1001111 01100000 é um caractere chinês "você" ou dois caracteres Latin1?
  2. Se o Unicode estipular que cada caractere é representado por n oito bits, para caracteres Latin1, muito espaço de armazenamento será desperdiçado.

Para resolver este problema, surgiram algumas regras de codificação e os números Unicode são calculados de acordo com certas regras de codificação para obter uma nova codificação. As codificações de caracteres comumente usadas na China incluem GBK, Big5 e utf8.

Usando o método encode de uma string, a string pode ser convertida em binário de acordo com o formato de codificação especificado; usando o método decode, um dado binário pode ser convertido em uma string de acordo com o formato de codificação 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)

Pensando: as razões e soluções para o texto ilegível.

meta de aprendizagem

  1. Representação de string
  2. Subscrição e fatiamento de strings
  3. Operações comuns em strings
  4. Conjuntos de caracteres e codificações
  5. operador membro
  6. método de formato de string

operador membro

Os operadores de associação (in e not in) podem ser usados ​​para determinar rapidamente se um elemento está em um objeto iterável especificado e o elemento a ser julgado no formato de sintaxe é um objeto iterável.

no operador

Pensando: Como julgar se um caractere está na string especificada?

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

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

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

não no operador

É usado da mesma forma que o operador in, exceto que not in é usado para determinar se o elemento não está na string especificada.

Observação: nem todos os dados podem usar o operador de identidade, e o operador de identidade só pode ser seguido por um objeto iterável.

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

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

Caso avançado

[Python] Python realiza o jogo de adivinhação de palavras - desafie sua inteligência e sorte!

[python] Biblioteca Python tkinter implementa programa GUI para conversor de unidade de peso

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

[python] Use o Selenium e o Chrome WebDriver para obter informações do artigo no [Tencent Cloud Studio Practical Training Camp]

Use o estúdio Tencent Cloud Cloud para realizar o agendamento do Baidu AI para realizar o reconhecimento de texto

[Fun with Python series [Xiaobai must see] Python multi-threaded crawler: baixe fotos de sites de pacotes de emoticons

[Jogue com a série Python] [Imperdível para Xiaobai] Use Python para rastrear dados históricos de Shuangseqiu e analisá-los visualmente

[Jogue com a série python] [Imperdível para Xiaobai] Use a tecnologia de rastreador Python para obter o IP do proxy e salvá-lo em um arquivo

[Imperdível para Xiaobai] Exemplo de síntese de imagem Python usando a biblioteca PIL para realizar a síntese de várias imagens por fileiras e colunas

[Xiaobai deve ver] O combate real do rastreador Python baixa imagens de deusas em lotes e as salva localmente

[Xiaobai deve ver] Análise detalhada do gerador de nuvem de palavras Python e implementação de código

[Xiaobai deve ver] Python rastreia um exemplo de dados do jogador da NBA

[Imperdível para Xiaobai] Exemplo de código para rastrear e salvar áudio do Himalaia usando Python

[Imperdível para Xiaobai] Realização técnica do uso do Python para baixar imagens de skins do League of Legends em lotes

[Xiaobai deve ver] Processamento e visualização de dados do rastreador Python

[Imperdível para Xiaobai] Programa de rastreador Python para obter facilmente imagens de pele de herói do Rei da Glória

[Imperdível para Xiaobai] Use Python para gerar uma lista personalizada de documentos do Word

[Imperdível para Xiaobai] Python crawler combat: obtenha fotos do site Onmyoji e salve-as automaticamente

Xiaobai série imperdível de sistema de gerenciamento de biblioteca - código de amostra para funções de login e registro

100 casos de combate real de Xiaobai: um programa de julgamento vencedor da loteria Shuangseqiu completo e simples, adequado para os primeiros passos de Xiaobai

Processamento e visualização de dados geoespaciais usando geopandas e shapely (.shp)

Use o selênio para rastrear os dados da lista de filmes Maoyan

Algoritmo de aprimoramento de imagem Retinex Princípio e implementação Explicação detalhada

Guia de primeiros passos para rastreadores (8): Escreva programas rastreadores de dados meteorológicos para análise visual

Guia introdutório para rastreadores (7): Usando Selenium e BeautifulSoup para rastrear Douban Movie Top250 Explicação de exemplo [Reptile Xiaobai deve assistir]

Guia de primeiros passos para rastreadores (6): anti-crawlers e habilidades avançadas: proxy IP, disfarce de agente do usuário, verificação de login de bypass de cookie e ferramentas de identificação de código de verificação

Guia Introdutório para Crawlers (5): Crawlers Distribuídos e Controle de Simultaneidade [Métodos de implementação para melhorar a eficiência do rastreamento e controle de racionalidade de solicitação]

Introdução aos rastreadores (4): a melhor maneira de rastrear páginas da Web dinâmicas usando Selenium e API

Guia de primeiros passos para crawlers (3): solicitações de rede Python e estratégias comuns anticrawler

Introdução aos rastreadores (2): como usar expressões regulares para extração e processamento de dados

Introdução aos répteis (1): Aprenda o básico e as habilidades dos répteis

Aplicação do modelo de aprendizado profundo no reconhecimento de imagem: prática de conjunto de dados CIFAR-10 e análise de precisão

Noções básicas de programação orientada a objetos Python e código de amostra

Guia de operação do banco de dados MySQL: aprenda a usar o Python para adicionar, excluir, modificar e consultar operações

Guia de operação de arquivo Python: codificação, leitura, gravação e tratamento de exceções

Use Python e Selenium para automatizar o rastreamento#【Dragon Boat Festival Special Call for Papers】Explore a tecnologia de ponta, e o futuro será devido a você"Zong" #Artigos contribuídos

Tutorial Python multi-thread e multi-processo: análise abrangente, casos de código e habilidades de otimização

Selenium Automation Toolset - Guia Completo e Tutoriais

Noções básicas do rastreador da web Python avançado para tutorial de combate real

Tutorial introdutório do Python: domine o conhecimento básico de loop for, loop while, operação de string, leitura e gravação de arquivos e tratamento de exceções

Tutorial de processamento e análise de dados do Pandas: do básico ao combate real

Explicação detalhada dos tipos de dados comumente usados ​​e operações relacionadas em Python

[Mais recente em 2023] Explicação detalhada dos seis principais esquemas para melhorar o índice do modelo de classificação

Noções básicas de programação Python introdutória e habilidades avançadas, desenvolvimento web, análise de dados e aprendizado de máquina e inteligência artificial

Resultados de previsão de gráfico com 4 métodos de regressão: regressão vetorial, regressão de floresta aleatória, regressão linear, regressão K-vizinhos mais próximos

Acho que você gosta

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