/ / Usando .translate () em uma string para descascar dígitos [Python 3] - python, string, python-3.x

Usando .translate () em uma string para descascar dígitos [Python 3] - python, string, python-3.x

Vamos dizer que eu tenho a string "2okjser823ab" .Como posso remover todos os números da string usando .translate ()?

Eu vejo que no Python 2.x você pode fazer algo como .translate (None, "0123456789") mas se eu tentar isso no Python 3 ele me diz que o método leva apenas um argumento.

Respostas:

2 para resposta № 1

Parece que é um pouco mais difícil no Python 3, não sei por quê.

Aqui está o que você pode fazer:

>>> import string
>>> translation = str.maketrans(string.ascii_letters, string.ascii_letters, string.digits)
>>> "2okjser823ab".translate(translation)
"okjserab"

Você pode precisar expandir string.ascii_letters com o que mais você espera como entrada (string.ascii_letters + string.punctuation + string.whitespace, por exemplo).

Edit: Eu não posso encontrá-lo claramente na documentação para str.maketrans, mas se você usar uma string vazia para os dois primeiros argumentos, tudo será mapeado de 1 para 1, mas a parte de exclusão (o terceiro argumento) ainda acontece:

>>> translation = str.maketrans("", "", string.digits)
>>> "2eeŷýéeokjser823 ab.;t".translate(translation)
"eeŷýéeokjser ab.;t"

-1 para resposta № 2

Você pode usar o strip função:

strings="tycoon0123456789999"
strings.strip("0123456789")