'how to Ignore characters other than [a-z][A-Z]

How can I ignore characters other than [a-z][A-Z] in input string in python, and after applying method what will the string look like?

Do I need to use regular expressions?



Solution 1:[1]

If you need to use a regex, use a negative character class ([^...]):

re.sub(r'[^a-zA-Z]', '', inputtext)

A negative character class matches anything not named in the class.

Demo:

>>> import re
>>> inputtext = 'The quick brown fox!'
>>> re.sub(r'[^a-zA-Z]', '', inputtext)
'Thequickbrownfox'

But using str.translate() is way faster:

import string
ascii_letters = set(map(ord, string.ascii_letters))
non_letters = ''.join(chr(i) for i in range(256) if i not in ascii_letters)
inputtext.translate(None, non_letters)

Using str.translate() is more than 10 times faster than a regular expression:

>>> import timeit, partial, re
>>> ascii_only = partial(re.compile(r'[^a-zA-Z]').sub, '')
>>> timeit.timeit('f(t)', 'from __main__ import ascii_only as f, inputtext as t')
7.903045892715454
>>> timeit.timeit('t.translate(None, m)', 'from __main__ import inputtext as t, non_letters as m')
0.5990171432495117

Using Jakub's method is slower still:

>>> timeit.timeit("''.join(c for c in t if c not in l)", 'from __main__ import inputtext as t; import string; l = set(string.letters)')
9.960685968399048

Solution 2:[2]

Welcome to 2022! Here, this code "Very short, very efficient."

val = input("TYPE IN HERE: ")
a = ''.join(e for e in val if e.isalnum())
print(a)

Answer Credit

Solution 3:[3]

You can use regex:

re.compile(r'[^a-zA-Z]').sub('', your_string)

You could also manage without regular expressions (e.g, if you had regex phobia):

import string
new_string = ''.join(c for c in old_string
                     if c not in set(string.letters))

Although I would use regex, this example has additional educational values: set, comprehension and string library. Note that set is not strictly needed here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 athrvvv
Solution 3