Да кажем, че имам низ "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")