re.sub erroring with "Expected string or bytes-like object"
As you stated in the comments, some of the values appeared to be floats, not strings. You will need to change it to strings before passing it to re.sub
. The simplest way is to change location
to str(location)
when using re.sub
. It wouldn't hurt to do it anyways even if it's already a str
.
letters_only = re.sub("[^a-zA-Z]", # Search for all non-letters " ", # Replace all non-letters with spaces str(location))
I suppose better would be to use re.match() function. here is an example which may help you.
import reimport nltkfrom nltk.tokenize import word_tokenizenltk.download('punkt')sentences = word_tokenize("I love to learn NLP \n 'a :(")#for i in range(len(sentences)):sentences = [word.lower() for word in sentences if re.match('^[a-zA-Z]+', word)] sentences