replace does not modify the original string. You need to reassign to it for every sentence:
for sentence in boilerplates:
corpus_jn = corpus_jn.replace(sentence, '')
Or you can use a regex:
import re
regex = '|'.join(map(re.escape, boilerplates))
corpus_jn = re.sub(regex, '', corpus_jn)
This will probably be more efficient since it iterates over the string only once.
Just to clarify: your original codes does not do any replacement at all. The argument to str is a generator expression which produces a generator object that does nothing until something iterates over it.
The call to str however does not iterate over it, it just transforms it into that <generator object ...> text.
Even if you consumed the generator properly using ''.join or a list-comprehension you would not obtain what you expected:
>>> text = 'hello 123 hello bye'
>>> boilerplates = ['hello', 'bye']
>>> [text.replace(sentence, '') for sentence in boilerplates]
[' 123 bye', 'hello 123 hello ']
As you can see the first time the word hello is replaced from text but the second iteration is still done on the original value and hence you get a string with no bye but that still contains hello. To remove both you have to use the solutions above, you can't do that using a generator in that way.