python – Removing numbers from string

python – Removing numbers from string

Would this work for your situation?

>>> s = 12abcd405
>>> result = .join([i for i in s if not i.isdigit()])
>>> result
abcd

This makes use of a list comprehension, and what is happening here is similar to this structure:

no_digits = []
# Iterate through the string, adding non-numbers to the no_digits list
for i in s:
    if not i.isdigit():
        no_digits.append(i)

# Now join all elements of the list with , 
# which puts all of the characters together.
result = .join(no_digits)

As @AshwiniChaudhary and @KirkStrauser point out, you actually do not need to use the brackets in the one-liner, making the piece inside the parentheses a generator expression (more efficient than a list comprehension). Even if this doesnt fit the requirements for your assignment, it is something you should read about eventually 🙂 :

>>> s = 12abcd405
>>> result = .join(i for i in s if not i.isdigit())
>>> result
abcd

And, just to throw it in the mix, is the oft-forgotten str.translate which will work a lot faster than looping/regular expressions:

For Python 2:

from string import digits

s = abc123def456ghi789zero0
res = s.translate(None, digits)
# abcdefghizero

For Python 3:

from string import digits

s = abc123def456ghi789zero0
remove_digits = str.maketrans(, , digits)
res = s.translate(remove_digits)
# abcdefghizero

python – Removing numbers from string

Not sure if your teacher allows you to use filters but…

filter(lambda x: x.isalpha(), a1a2a3s3d4f5fg6h)

returns-

aaasdffgh

Much more efficient than looping…

Example:

for i in range(10):
  a.replace(str(i),)

Leave a Reply

Your email address will not be published. Required fields are marked *