python: cómo eliminar (retener) otros elementos, excepto letras y números en una cadena

Introducción

  Encontré el siguiente problema
Inserte la descripción de la imagen aquí
en la pregunta de cepillado de Leetcode: en una cadena que contiene "," ":" y otros caracteres, solo se consideran letras y números, por lo que, por supuesto, solo se deben conservar las letras y números, y los demás se eliminan.

1. Utilice la función re.sub ()

Para obtener más conocimientos sobre regularización, consulte este sitio web.
  El módulo re de Python proporciona la sintaxis re.sub para reemplazar coincidencias en cadenas
:

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

parámetro:

patrón: El patrón de cadena en el regular.
repl: La cadena reemplazada, que también puede ser una función.
cadena: la cadena original que se buscará y reemplazará.
count: El número máximo de reemplazos después de que el patrón coincide. El valor predeterminado 0 significa reemplazar todas las coincidencias.
banderas: el modo de coincidencia utilizado durante la compilación, en forma digital.
Los tres primeros son parámetros obligatorios y los dos últimos son parámetros opcionales.

import re

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

¿No es asombroso?
Aprovecha elementos especiales en la sintaxis de patrones de expresión regular.

[…] Se utiliza para representar un grupo de caracteres, enumerados por separado: [amk] coincide con'a ',' m 'o'k'
[^…] Caracteres que no están en []: [^ abc] coincide excepto a, b, Caracteres distintos de c.
re * coincide con cero o más expresiones.
re + coincide con una o más expresiones.
re? Coincide con 0 o 1 fragmento definido por la expresión regular anterior, de forma no codiciosa
\ w coincide con el subrayado alfanumérico
\ W coincide con el subrayado de letras no numéricas

Por lo tanto, [\ W _] + significa hacer coincidir una o más letras no digitales.
Si cambiamos [\ W _] + a [\ w _] +, entonces significa hacer coincidir uno o más dígitos y 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 hace uso de los métodos integrados isalpha () e isnumeric () de la cadena, iterando cada elemento en la cadena y combinando el método join (el método join () se usa para conectar los elementos en la secuencia con el caracteres especificados para generar una nueva cadena).

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

También puede eliminar solo letras y 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)
#   ,  ,  : 

Supongo que te gusta

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