python - separar - Eliminar caracteres no numéricos de una cadena
python separar string por caracter (4)
Hay una builtin para esto.
string.translate (s, table [, deletechars])
Elimine todos los caracteres de s que estén en barras de deleción (si están presentes), y luego traduzca los caracteres utilizando la tabla, que debe ser una cadena de 256 caracteres que proporcione la traducción para cada valor de carácter, indexada por su ordinal. Si la tabla es Ninguna, solo se realiza el paso de eliminación de caracteres.
>>> import string
>>> non_numeric_chars = ''''.join(set(string.printable) - set(string.digits))
>>> non_numeric_chars = string.printable[10:] # more effective method. (choose one)
''sd67637 8''.translate(None, non_numeric_chars)
''676378''
O puedes hacerlo sin importar (pero no hay razón para esto):
>>> chars = ''abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&/'()*+,-./:;<=>?@[//]^_`{|}~ /t/n/r/x0b/x0c''
>>> ''sd67637 8''.translate(None, chars)
''676378''
Se me ha asignado la tarea de eliminar todos los caracteres no numéricos, incluidos los espacios de un archivo de texto o cadena, y luego imprimir el nuevo resultado junto a los caracteres antiguos, por ejemplo:
Antes de:
sd67637 8
Después:
sd67637 8 = 676378
Como soy un principiante, no sé por dónde empezar con esta tarea. Por favor ayuda
La forma más fácil es con una expresión regular.
import re
a = ''lkdfhisoe78347834 (())&/&745 ''
result = re.sub(''[^0-9]'','''', a)
print result
>>> ''78347834745''
Pasa sobre tu cadena, char por char y solo incluye dígitos:
new_string = ''''.join(ch for ch in your_string if ch.isdigit())
O use una expresión regular en su cadena (si en algún momento desea tratar grupos no contiguos por separado) ...
import re
s = ''sd67637 8''
new_string = ''''.join(re.findall(r''/d+'', s))
# 676378
Luego simplemente print
:
print(old_string, ''='', new_string)
Puede usar string.ascii_letters
para identificar sus no dígitos:
from string import *
a = ''sd67637 8''
a = a.replace('' '', '''')
for i in ascii_letters:
a = a.replace(i, '''')