re.sub erroring with "Expected string or bytes-like object" re.sub erroring with "Expected string or bytes-like object" python python

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))


The simplest solution is to apply Python str function to the column you are trying to loop through.

If you are using pandas, this can be implemented as:

dataframe['column_name']=dataframe['column_name'].apply(str)


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