Filtering Characters from a String
Solution 1
Just use str.translate()
:
In [4]: 'abcdefabcd'.translate(None, 'acd')
Out[4]: 'befb'
From the documentation:
string.translate(s, table[, deletechars])
Delete all characters from
s
that are indeletechars
(if present), and then translate the characters usingtable
, which must be a 256-character string giving the translation for each character value, indexed by its ordinal. Iftable
is None, then only the character deletion step is performed.
If -- for educational purposes -- you'd like to code it up yourself, you could use something like:
''.join(c for c in str1 if c not in str2)
Solution 2
Use replace
:
def filter_string(str1, str2):
for c in str2:
str1 = str1.replace(c, '')
return str1
Or a simple list comprehension:
''.join(c for c in str1 if c not in str2)
SunshineTS
Updated on July 29, 2022Comments
-
SunshineTS almost 2 years
I need to make a function that takes two strings as imnput and returns a copy of str 1 with all characters from str2 removed.
First thing is to iterate over str1 with a for loop, then compare to str2, to accomplish subtraction I should create a 3rd string in which to store the output but I'm a little lost after that.
def filter_string(str1, str2): str3 = str1 for character in str1: if character in str2: str3 = str1 - str2 return str3
This is what I've been playing with but I don't understand how I should proceed.
-
SunshineTS almost 11 yearsThis works and I understand how but I don't think it was strictly how I was supposed to achieve it.
-
asmaier almost 5 yearsIn Python3 the translate function only takes one argument, see docs.python.org/3/library/… . To do the same thing in Python 3 you need to do:
'abcdefabcd'.translate(str.maketrans({'a': None, 'c': None, 'd': None}))
, see also stackoverflow.com/questions/41535571/… -
Dhruv about 3 yearsThis is for Python2. for python3:
text = text.translate(str.maketrans('','',string.punctuation))