Artigo Diretório
introdução
Eu encontrei o seguinte problema
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)
# , , :