import re
p = "The pen is on the table."
def repl(x):
if x.group(1):
return "B{}".format("I"*len(x.group(2)))
elif x.group(3):
return "B"
else:
return "S"
print( re.sub(r'(\w)(\w*)|([^\w\s])|\s', repl, p) )
# => BIISBIISBISBISBIISBIIIIB
aW1wb3J0IHJlCnAgPSAiVGhlIHBlbiBpcyBvbiB0aGUgdGFibGUuIgpkZWYgcmVwbCh4KToKCWlmIHguZ3JvdXAoMSk6CgkJcmV0dXJuICJCe30iLmZvcm1hdCgiSSIqbGVuKHguZ3JvdXAoMikpKQoJZWxpZiB4Lmdyb3VwKDMpOgoJCXJldHVybiAiQiIKCWVsc2U6CgkJcmV0dXJuICJTIgoJCQpwcmludCggcmUuc3ViKHInKFx3KShcdyopfChbXlx3XHNdKXxccycsIHJlcGwsIHApICkKIyA9PiBCSUlTQklJU0JJU0JJU0JJSVNCSUlJSUIK