I have a set of strings in a dataframe like below

```
ID TextColumn
1 This is line number one
2 I love pandas, they are so puffy
3 [This $tring is with specia| characters, yes it is!]

```

A. I want to format this string to eliminate all the special characters
B. Once formatted, I'd like to get a list of unique words (space being the only split) 

Here is the code I have written:

get\_df\_by\_id dataframe has one selected frame, say ID 3.

```
#replace all special characters
formatted_title = get_df_by_id['title'].str.replace(r'[\-\!\@\#\$\%\^\&\*\(\)\_\+\[\]\;\'\.\,\/\{\}\:\"\<\>\?]' , '')
# then split the words
results = set()
get_df_by_id['title'].str.lower().str.split().apply(results.update)
print results

```

But when I check output, I could see that special characters are still in the list.

```
Output

set([u'[this', u'is', u'it', u'specia|', u'$tring', u'is!]', u'characters,', u'yes', u'with'])

```

Intended output should be like below:

```
set([u'this', u'is', u'it', u'specia', u'tring', u'is', u'characters,', u'yes', u'with'])

```

Why does formatted dataframe still retain the special characters?