python - como excluir (reter) outros elementos, exceto letras e números em uma string

introdução

  Eu encontrei o seguinte problema
Insira a descrição da imagem aqui
na questão de escovar Leetcode: Em uma string contendo "," ":" e outros caracteres, apenas letras e números são considerados, então é claro que apenas as letras e números devem ser mantidos, e os outros são excluídos.

1. Use a função re.sub ()

Para obter mais conhecimento sobre regularização, consulte este site.
  O módulo re do Python fornece a sintaxe re.sub para substituir correspondências em strings
:

re.sub(pattern, repl, string, count=0, flags=0)

parâmetro:

pattern: a string de padrão no regular.
repl: a string substituída, que também pode ser uma função.
string: a string original a ser pesquisada e substituída.
contagem: o número máximo de substituições após o padrão ser correspondido. O padrão 0 significa substituir todas as correspondências.
sinalizadores: o modo de correspondência usado durante a compilação, em formato digital.
Os três primeiros são parâmetros obrigatórios e os dois últimos são parâmetros opcionais.

import re

s = "A man, a plan, a canal: Panama"
s = s.lower()
result = re.sub('[\W_]+', '', s)
print(result)
# amanaplanacanalpanama

Não é incrível?
Ele tira proveito de elementos especiais na sintaxe de padrão de expressão regular.

[...] é usado para representar um grupo de caracteres, listados separadamente: [amk] corresponde a'a ',' m 'ou'k'
[^ ...] Caracteres que não estão em []: [^ abc] corresponde, exceto a, b, Caracteres diferentes de c.
re * corresponde a zero ou mais expressões.
re + corresponde a uma ou mais expressões.
re? Corresponde a 0 ou 1 fragmento definido pela expressão regular anterior, forma não gananciosa
\ w corresponde a sublinhado alfanumérico
\ W corresponde a sublinhado de letra não numérica

Portanto, [\ W _] + significa combinar uma ou mais letras não digitais.
Se mudarmos [\ W _] + para [\ w _] +, significa combinar um ou mais dígitos e letras

import re

s = "A man, a plan, a canal: Panama"
s = s.lower()
result = re.sub('[\w_]+', '', s)
print(result)
#  ,  ,  : 

2.isalpha () + isnumeric () + join ()

  Este método faz uso dos métodos embutidos isalpha () e isnumeric () da string, iterando cada elemento na string e combinando o método de junção (o método join () é usado para conectar os elementos na sequência com o caracteres especificados para gerar uma nova String).

s = "A man, a plan, a canal: Panama"
s = s.lower()
# 去掉除字符串与数字外的其他
s = [i for i in s if i.isalpha() or i.isnumeric()]
s = "".join(s)
print(s)
#  amanaplanacanalpanama

Você também pode excluir apenas letras e números

s = "A man, a plan, a canal: Panama"
s = s.lower()
# 去掉除字符串与数字外的其他
s = [i for i in s if not i.isalpha() and not i.isnumeric()]
s = "".join(s)
print(s)
#   ,  ,  : 

Acho que você gosta

Origin blog.csdn.net/weixin_46649052/article/details/114441811
Recomendado
Clasificación