una separar quitar por lista especiales espacios eliminar elementos caracteres caracter cadenas cadena python python-3.x python-3.3

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, '''')