/ / Използване на .translate () на низ, за ​​да се премахнат цифри [Python 3] - python, string, python-3.x

Използване на .translate () върху низ, за ​​да изтриете цифрите [Python 3] - python, string, python-3.x

Да кажем, че имам низ "2okjser823ab" .Как мога да премахна всички числа от низ, използвайки .translate ()?

Виждам, че в Python 2.x можете да направите нещо като .translate (Никой, "0123456789"), но ако се опитам това в Python 3 ми казва, че методът приема само един аргумент.

Отговори:

2 за отговор № 1

Изглежда, че е малко по-трудно в Python 3, не съм сигурен защо.

Ето какво можете да направите:

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

Може да се наложи да се разширите string.ascii_letters с всичко друго, което очаквате като вход (string.ascii_letters + string.punctuation + string.whitespace, например).

Edit: Не мога да го намеря ясно в документацията str.maketrans, но ако използвате празен низ за първите два аргумента, всичко ще бъде съпоставено от 1 до 1, но частта за изтриване (третия аргумент) все още се случва:

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

-1 за отговор № 2

Можете да използвате strip функция:

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